使用工厂方式创建 Bean。
PersonBeanFactory
public class PersonBeanFactory implements FactoryBean<Person> {
@Override
public Person getObject() throws Exception {
return new Person("工厂 Bean 的创建", 1);
}
@Override
public Class<?> getObjectType() {
return Person.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
getObject : 获取对象
getObjectType: 获取对象的类型
isSingleton: true 单实例 false:多实例
配置类
@Configuration
public class BeanFactoryConfig {
@Bean
public PersonBeanFactory personFactory() {
return new PersonBeanFactory();
}
}
测试代码
@Test
public void test8() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(BeanFactoryConfig.class);
Object personFactory = ctx.getBean("personFactory");
System.out.println(personFactory.getClass());
}
查看 personFactory 的类型,可以判断它是 me.sjl.bean.Person 还是 me.sjl.bean.PersonBeanFactory
结果
如果想要获取 工厂 Bean 的对象,使用 getBean("&personFactory") 方式 。加 & 字符
@Test
public void test8() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(BeanFactoryConfig.class);
Object personFactory = ctx.getBean("&personFactory");
System.out.println(personFactory.getClass());
}