分别使用构造方法、静态工厂和实例工厂实例化Bean。
1. 创建项目
Idea创建Java项目,项目名称为:case05-spring-student04。
2. 导入spring相关jar包
case05-spring-student04项目下创建lib目录,在lib目录下导入Jar包:
-
核心包
spring-core-5.3.25.jar
spring-beans-5.3.25.jar
spring-context-5.3.25.jar
spring-expression-5.3.25.jar
-
测试包
junit-4.6.jar
-
依赖包
commons-logging-1.2.jar
3. 创建Spring配置文件
src目录下创建applicationContext.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="studentBean1" class="com.wfit.student.StudentBean1"/>
<!--静态工厂实例化-->
<bean id="studentBean2" class="com.wfit.factory.BeanStaticFactory" factory-method="getStudentBean2"/>
<!--实例工厂实例化 1配置工厂 -->
<bean id="beanInstanceFactory" class="com.wfit.factory.BeanInstanceFactory"/>
<!--实例工厂实例化 2 使用factory-bean指向配置的实例工厂-->
<bean id="studentBean3" factory-bean="beanInstanceFactory" factory-method="getStudentBean3"/>
</beans>
4. 创建StudentBean1类
src目录下创建com.wfit.student包,此包目录下创建StudentBean1类。
public class StudentBean1 {
//无参构造方法
public StudentBean1(){
System.out.println("构造方法实例化Bean...");
}
}
5. 创建StudentBean2类
com.wfit.student目录下创建StudentBean2类。
public class StudentBean2 {
public StudentBean2(){
System.out.println("静态工厂实例化Bean...");
}
}
6. 创建StudentBean3类
com.wfit.student目录下创建StudentBean3类。
public class StudentBean3 {
public StudentBean3(){
System.out.println("实例工厂实例化Bean...");
}
}
7. 创建BeanStaticFactory类
src目录下创建com.wfit.factory包,此包目录下创建BeanStaticFactory类。
public class BeanStaticFactory {
public static StudentBean2 getStudentBean2(){
return new StudentBean2();
}
}
8. 创建BeanInstanceFactory类
com.wfit.factory目录下创建BeanInstanceFactory类。
public class BeanInstanceFactory {
public BeanInstanceFactory(){
System.out.println("实例工厂实例化...");
}
public StudentBean3 getStudentBean3(){
return new StudentBean3();
}
}
9. 创建测试类
src目录下创建com.wfit.test包,此包目录下创建TestStudent测试类。
public class TestStudent {
@Test
public void testBean(){
//初始化Spring容器ApplicationContext,加载配置文件
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
10. 执行结果