问答详情
源自:3-5 Spring Bean装配之Resource

求教大神,关于获取Context

@Test

//这个是我调用Test父类获取context

public void textMoocBeanName() {

//System.out.println("textMoocBeanName : " + super.getBean("moocBeanName").hashCode());

MoocBeanName bean = super.getBean("moocBeanName");

}

//这个是我通过接口调用获取context

@Override

public void setApplicationContext(ApplicationContext applicationContext)

throws BeansException {

System.out.println("setApplicationContext : " + applicationContext.getBean(this.beanName).hashCode());

MoocBeanName bean = (MoocBeanName) applicationContext.getBean(this.beanName);

bean.aa();

}

//我在以上两种方式获取Context的时候有一个问题,就是为什么在测试类获取的Context不需要强制类型转换,而调用接口的方法则必须要强制类型转换才可以调用方法呢

提问者:qq_下个瞬间_03247970 2017-12-07 23:10

个回答

  • 笑傲独行侠
    2017-12-08 21:02:36
    已采纳

    因为第一种获取方法中的getBean方法并不是context中(系统中)自带的getBean方法,而是老师重写的getBean方法

      protected <T extends Object> T getBean(String beanId){

     return (T)context.getBean(beanId);

      }

    这个方法的返回值是一个泛型,就是说这个方法返回的任何类型都不用类型转换。<T extends Object>表示方法反悔的是随便任何类型的数据