1、Spring有两种类型bean,一种普通bean,另外一种工厂bean(FactoryBean)
2、普通bean:在配置文件中定义bean类型就是返回类型
3、工厂bean:在配置文件定义bean类型可以和返回类型不一样
第一步创建类,让这个类作为工厂bean,实现接口FactoryBean
第二步实现接口里面的方法,在实现的方法中定义返回的bean类型
FactoryBean的代码
MyBean:
public class Mybean implements FactoryBean<Book> {
//返回的对象-可以通过反射修改返回对象
@Override
public Book getObject() throws Exception {
//伪代码
Book book = new Book();
List<String> lists = new ArrayList<>();
lists.add("百年孤独");
book.setList(lists);
return book;
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return FactoryBean.super.isSingleton();
}
}
<bean id="myBean" class="com.spring5.factorybean.Mybean"></bean>
junit测试:
@Test
public void test3(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean3.xml");
Book myBean = applicationContext.getBean("myBean", Book.class);
System.out.println(myBean);
}
测试结果:
Book{list=[百年孤独]}