Spring中有哪些实例化Bean的方法呢?
下文笔者讲述Spring中实例化Bean的方法分享,如下所示:
在以前使用一个类的成员方法前,需先实例化该类的对象
当我们把javabean交给spring管理,也是一样的原理
使用对象前,需实例化bean,那么Spring中有哪些实例化Bean的方法呢?
构造器实例化Bean
在以前使用一个类的成员方法前,需先实例化该类的对象
当我们把javabean交给spring管理,也是一样的原理
使用对象前,需实例化bean,那么Spring中有哪些实例化Bean的方法呢?
Spring中实例化Bean,可使用
构造器实例化、静态工厂方式实例化和实例工厂方式实例化
三种方式进行实例化
下文笔者将一一道来,如下所示
构造器实例化简介
构造器实例化:
指Spring容器通过Bean中对应的类中默认的构造函数实例化Bean
例:构造器实例化Bean
1.创建项目并导入 JAR 包
在Idea中创建springDemo项目
将Spring支持和依赖的JAR包复制到项目lib 目录中
并发布到类路径下
2.创建实体类
在 src目录下创建一个名为 com.java265.instance.constructor 包
包下创建一个实体类 Person1
package com.java265.instance.constructor;
public class Person1 {
}
3.创建Spring配置文件
在 com.java265.instance.constructor 包下
创建 Spring配置文件 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" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="person1" class="com.java265.instance.constructor.Person1" />
</beans>
以上配置中,定义一个id为person1的Bean
其中 class 属性指定了其对应的类为 Person1。
4.创建测试类
在 com.java265.instance.constructor包
新建 InstanceTest1测试类
如下所示
package com.java265.instance.constructor;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class InstanceTest1 {
@Test
public void test() {
// 定义Spring配置文件的路径
String xmlPath = "com/java265/instance/constructor/ApplicationContext.xml";
// 初始化Spring容器,加载配置文件,并对bean进行实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
xmlPath);
// 通过容器获取id为person1的实例
System.out.println(applicationContext.getBean("person1"));
}
}
5.运行程序并查看结果
使用JUnit测试
并运行test()方法,运行成功后,控制台的输出结果如图 1 所示。
静态工厂方式实例化
Spring中 可使用静态工厂的方式实例化Bean 此种方式需要提供一个静态工厂方法创建Bean实例例:
1.创建实体类
在com.java265.instance.static_factory包下新建一个实体类Person2
此类同Person1一样
2.创建静态工厂类
在 com.java265.instance.static_factory包下创建一个名为 MyBeanFactory类
并在该类中创建一个名为createBean()静态方法
用于创建Bean实例
package com.java265.instance.static_factory;
public class MyBeanFactory {
// 创建Bean实例的静态工厂方法
public static Person2 createBean() {
return new Person2();
}
}
3.创建 Spring 配置文件
在com.java265.instance.static_factory包下
创建Spring配置文件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" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="person2" class="com.java265.instance.static_factory.MyBeanFactory"
factory-method="createBean" />
</beans>
4.创建测试类
在com.java265.instance.static_factory包下
创建一个名为 InstanceTest2测试类
package com.java265.instance.static_factory;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class InstanceTest2 {
@Test
public void test() {
// 定义Spring配置文件的路径
String xmlPath = "com/java265/instance/static_factory/applicationContext.xml"; // 初始化Spring容器,加载配置文件,并对bean进行实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
xmlPath);
// 通过容器获取id为person2实例
System.out.println(applicationContext.getBean("person2"));
}
}
5.运行程序并查看结果
实例工厂方式实例化
实例化Bean的另一种方法: 采用实例工厂例
1.创建实体类
在项目src目录下创建一个名为 com.java265.instance.factory包
包下创建一个 Person3 类
此类同Person1一样
2.创建实例工厂类
在com.java265.instance.factory包下
创建一个名为 MyBeanFactory类
package com.java265.instance.factory;
public class MyBeanFactory {
public MyBeanFactory() {
System.out.println("person3工厂实例化中");
}
// 创建Bean的方法
public Person3 createBean() {
return new Person3();
}
}
3.创建Spring配置文件
在 com.java265.instance.factory 包下创建 Spring 的配置文件 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" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!-- 配置实例工厂 -->
<bean id="myBeanFactory" class="com.java265.instance.factory.MyBeanFactory" />
<!-- factory-bean属性指定一个实例工厂,factory-method属性确定使用工厂中的哪个方法 -->
<bean id="person3" factory-bean="myBeanFactory" factory-method="createBean" />
</beans>
在id等于person3的Bean中
使用factory-bean属性指定一个实例工厂
该属性值就是实例工厂id属性值
使用factory-method属性
确定使用工厂中createBean()方法
4.创建测试类
在 com.java265.instance.factory包下
创建一个名为 InstanceTest3 的测试类
package com.java265.instance.factory;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class InstanceTest3 {
@Test
public void test() {
// 定义Spring配置文件的路径
String xmlPath = "com/java265/instance/factory/applicationContext.xml"; // 初始化Spring容器,加载配置文件,并对bean进行实例化
// 初始化Spring容器,加载配置文件,并对bean进行实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
xmlPath);
// 通过容器获取id为person3实例
System.out.println(applicationContext.getBean("person3"));
}
}
5.运行程序并查看结果
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


