普通bean:就是我们正常导入的那种方法。
工厂bean:就定义的bean可以跟返回的bean不一样。
1、Spring有两种类型bean,一种普通bean,另外一种工厂bean (EactoryBean)
2、普通bean:在配置文件中定义bean类型就是返回类型。
3、工厂bean:在配置文件定义bean类型可以和返回类型不一样。
第一步创建类,让这个类作为工厂bean,实现接口FactoryBean-
第二步实现接口里面的方法,在实现的方法中定义返回的bean类型。
测试类:
public void show4(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");
Course course = context.getBean("myBean", Course.class);
System.out.println(course);
}
引用的类:
package cn.zsp.spring5.collectiontype;
public class Course {
private String cname;
public void setCname(String cname) {
this.cname = cname;
}
@Override
public String toString() {
return "Course{" +
"cname='" + cname + '\'' +
'}';
}
}
继承beanfactory的类:
package cn.zsp.spring5.factorybean;
import cn.zsp.spring5.collectiontype.Course;
import org.springframework.beans.factory.FactoryBean;
public class Mybean implements FactoryBean<Course> {
@Override
public Course getObject() throws Exception {
Course course=new Course();
course.setCname("123");
return course ;
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return false;
}
}
<?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="cn.zsp.spring5.factorybean.Mybean"></bean>
</beans>```