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


    转自:

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

    下文笔者讲述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
     
    
    
        
    
    
    以上配置中,定义一个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 
    
    
    
        
    
    
    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
    
    
    
        
        
        
        
    
    在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.运行程序并查看结果
  • 相关阅读:
    kubelet 状态更新机制之参数配置解析
    .Net依赖注入神器Scrutor(上)
    2024全国水科技大会暨水环境新污染物控制青年学者论坛
    k8s--基础--16--Service--理论
    网络安全(黑客)技术——自学2024
    吴恩达的机器学习,属实牛逼
    虹科Q&A | SWCF2022 11月29日演讲笔记:卫星传输链路中的关键技术分享
    HighTec快捷键(Keys)设置位置
    day83 AJAX
    七天入门node.js(02)
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127565723