4、Spring5-IOC容器-Bean管理-FactoryBean
bean的分类
1、Spring有两种Bean,一种是普通的Bean,另外一种是工厂FactoryBean
2、普通Bean:(自己创建的bean)在Spring的配置文件中,定义的bean类型就是返回的类型
//使用普通bean创建对象 public class MyBean { }
<bean id="myBean" class="factoryBean.MyBean"></bean>
3、工厂Bean:在配置文件中定义Bean类型可以和返回的类型不一样
(1)第一步:创建一个类,让这个类作为一个工厂bean,实现接口FactoryBean
(2)第二步:实现接口里面的方法,在实现方法中定义返回的bean类型
<bean id="myBean" class="factoryBean.MyBean"></bean>
public class MyBean implements FactoryBean<Course> { //定义返回Bean对象(加泛型):设置MyBean返回的对象是Course对象 @Override public Course getObject() throws Exception {//配置文件中定义的返回值类型和得到的类型不一样,这个类型在getObject方法中定义 Course course = new Course(); course.setCname("abc"); return course; } @Override public Class<?> getObjectType() { return null; } @Override public boolean isSingleton() { return false; } }
测试类如下:
@Test public void test3(){ ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml"); Course course = context.getBean("myBean", Course.class); System.out.println(course); }
在配置文件中配置的返回值类型为MyBean,但是得到的却是Course类型,FactoryBean的getObject()方法可以定义返回值的类型。