Spring中有哪些实例化Bean的方法呢?

书欣 Spring 发布时间:2022-09-05 15:56:23 阅读数:8195 1
下文笔者讲述Spring中实例化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.运行程序并查看结果
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202209/4336.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者