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
方法