学习之前,好图分享
Spring 有两种类型的Bean,一种普通Bean,另外一种是工厂Bean(FactoryBean)
1:普通Bean:在配置文件中定义bean类型就是返回的类型
讲解普通bean链接
链接一:Spring—IOC(基本原理)(IOC基于XML注入需要的属性)
链接二:Spring框架Bean管理:在XML配置文件的基础上向类中注入属性(对创建的类属性进行框架版的赋值)
2:工厂Bean:在配置文件定义bean类型可以和返回类型不一样。
链接以和链接二已经介绍了普通bean,接下来我们来学习一下工厂bean
工厂bean的实现
一:创建一个普通类,通过工厂bean往这个普通类注入属性值
public class stu {
private String mm; //在普通类创建一个属性,并生成它的set方法,接下来实现的是通过工厂bean来调用此类中的set方法往mm属性注入值
public void setMm(String mm) {
this.mm = mm;
}
@Override
public String toString() { //这里重写一下tostring方法可以使注入的属性值有效的输出
return "stu{" +
"mm='" + mm + '\'' +
'}';
}
}
二:创建类,让这个类作为工厂bean,去实现接口FactoryBean,而且重写此接口中的方法
注意:此接口有三种方法在这里只需要使用第一种 getobject()这种方法,需要什么类属性的返回值就定义类属性的getobject()
import org.springframework.beans.factory.FactoryBean;
public class demo1 implements FactoryBean<stu> { //通过类去实现工厂bean,这里的stu是一个类,需要返回的类型
@Override
public stu getObject() throws Exception {
stu dd = new stu();
dd.setMm("我是你爸爸");
return dd;
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return false;
}
}
三:配置xml文件
<?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="d1" class="new_study.java_file.factorybean.demo1">
</bean>
</beans>
四:通过测试类去看看往基础类stu注入的属性值
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testdemo {
@Test
public void think(){
ApplicationContext context = new ClassPathXmlApplicationContext("new_study/java_file/factorybean/bean.xml");
stu da = context.getBean("d1",stu.class);
System.out.println(da);
}
}
输出结果: