文章目录
getObject
方法返回类型的对象。getObject()
:获取返回的对象,此处返回的对象会被注入到ioc容器中public Class<?> getObjectType()
:返回创建Bean类型public boolean isSingleton()
:返回是否创建单例,如果返回true,那么创建的对象将是单例的,返回false,创建的是多实例的对象。/**
* 自定义FactoryBean,用来创建对象
* 1、@Component :将创建的MyFactoryBean注入到容器中
* 2、实现FactoryBean
* 3、指定泛型<T>
*/
@Component
public class MyFactoryBean implements 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;
}
}
@Test
public void testFactoryBean(){
//根据id获取实例,这里实际获取的是getObject返回的对象
Admin admin1 = applicationContext.getBean("myFactoryBean", Admin.class);
System.out.println(admin1);
}
&
即可,如下:@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
方法