分别使用构造方法、静态工厂和实例工厂实例化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配置文件。
<beansxmlns="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"><!--构造方法实例化--><beanid="studentBean1"class="com.wfit.student.StudentBean1"/><!--静态工厂实例化--><beanid="studentBean2"class="com.wfit.factory.BeanStaticFactory"factory-method="getStudentBean2"/><!--实例工厂实例化 1配置工厂 --><beanid="beanInstanceFactory"class="com.wfit.factory.BeanInstanceFactory"/><!--实例工厂实例化 2 使用factory-bean指向配置的实例工厂--><beanid="studentBean3"factory-bean="beanInstanceFactory"factory-method="getStudentBean3"/></beans>
4. 创建StudentBean1类
src目录下创建com.wfit.student包,此包目录下创建StudentBean1类。
publicclassStudentBean1 { //无参构造方法publicStudentBean1(){ System.out.println("构造方法实例化Bean..."); } }
5. 创建StudentBean2类
com.wfit.student目录下创建StudentBean2类。
publicclassStudentBean2 { publicStudentBean2(){ System.out.println("静态工厂实例化Bean..."); } }
6. 创建StudentBean3类
com.wfit.student目录下创建StudentBean3类。
publicclassStudentBean3 { publicStudentBean3(){ System.out.println("实例工厂实例化Bean..."); } }
7. 创建BeanStaticFactory类
src目录下创建com.wfit.factory包,此包目录下创建BeanStaticFactory类。
publicclassBeanStaticFactory { publicstaticStudentBean2getStudentBean2(){ returnnewStudentBean2(); } }
8. 创建BeanInstanceFactory类
com.wfit.factory目录下创建BeanInstanceFactory类。
publicclassBeanInstanceFactory { publicBeanInstanceFactory(){ System.out.println("实例工厂实例化..."); } publicStudentBean3getStudentBean3(){ returnnewStudentBean3(); } }
9. 创建测试类
src目录下创建com.wfit.test包,此包目录下创建TestStudent测试类。
publicclassTestStudent { publicvoidtestBean(){ //初始化Spring容器ApplicationContext,加载配置文件ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext.xml"); } }
10. 执行结果