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.运行程序并查看结果
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。