Spring有两种类型的bean, 一种普通bean, 一种工厂bean(FactoryBean)
普通Bean: 在配置文件中定义的bean类型就是返回类型;
工厂bean: 在配置文件中定义的bean类型可以和返回类型不一样
创建工厂bean的方法:
第一步: 创建类, 实现接口FactoryBean;
第二步: 实现接口里面的方法, 在实现的方法中定义返回的bean类型.
创建FacBean2类:
public class FacBean2 { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
创建FacBean类实现FactoryBean接口:
public class FacBean implements FactoryBean<FacBean2> { //定义返回bean的类型 @Override public FacBean2 getObject() throws Exception { FacBean2 myBean2 = new FacBean2(); return myBean2; } @Override public boolean isSingleton() { return false; } @Override public Class<?> getObjectType() { return null; } }
在配置文件中创建bean指定类型为FacBean:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="myBean" class="com.ryan.spring5.factoryBean.FacBean"></bean> </beans>
测试可发现, 创建的对象的类型已经被指定为FacBean2: