getObject 方法返回类型的对象。 getObject() public Class<?> getObjectType() public boolean isSingleton()
自定义一个FactoryBean,实现Admin的注入,如下:
/**
* 自定义FactoryBean,用来创建对象
* 1、@Component :将创建的MyFactoryBean注入到容器中
* 2、实现FactoryBean
* 3、指定泛型<T>
*/
@Component
public class MyFactoryBeanimplements FactoryBean<Admin>{
@Override
public Admin getObject()throws Exception {
System.out.println("创建Admin");
return new Admin();
}
@Override
public Class<?> getObjectType() {
return Admin.class;
}
@Override
public boolean isSingleton(){
return true;
}
}
此时即可从容器中获取到对应的Bean了,如下:
@Test
public void testFactoryBean(){
//根据id获取实例,这里实际获取的是getObject返回的对象
Admin admin1 = applicationContext.getBean("myFactoryBean", Admin.class);
System.out.println(admin1);
}
以上是获取的实例Bean,现在我们就想获取MyBeanFactory本身这个对象,可以在id的前面加上 & 即可,如下:
@Test
public void testFactoryBean2(){
//根据&id获取实例,实际获取的就是MyFactoryBean的对象
MyFactoryBean bean = applicationContext.getBean("&myFactoryBean", MyFactoryBean.class);
System.out.println(bean);
}
FactoryBean 类型,如果是该类型的,调用getObject方法返回对象即可。 org.springframework.beans.factory.support.FactoryBeanRegistrySupport#doGetObjectFromFactoryBean 方法