• 【Spring】bean的配置


    1. 前言

    在之前的文章中.写到过bean的常用配置,当时只是介绍了bean标签中的常用属性配置:class,id和scope这三个属性. 不熟的小伙伴可以看一下这篇文章:【Spring】IOC容器与Bean的常用属性配置
    本文介绍bean的一些其它属性配置.以及静态工厂和实例工厂

    2. name

    在Spring中,bean的name属性和id相同,是一个字符串类型的标识符,用于唯一地标识一个bean。它可以通过XML配置文件或注解的方式来指定。
    ⭐与id不同的是,name属性可以执行多个值
    例如:
    在这里插入图片描述
    通过name属性的值同样可以得到bean对象
    在这里插入图片描述

    3. lazy-init

    Spring的lazy-init属性用于控制bean的初始化时机。当设置为true时,表示该bean在第一次被使用时才会进行初始化;当设置为false时,表示该bean在容器启动时就进行初始化。

    默认情况下,bean在容器启动时就进行初始化。lazy-init初始值为false

    <bean class="com.exaple.entity.Student" id="student">bean>
    
    • 1

    在Student类中的构造方法 设置一个输出语句,在创建对象时一定会调用构造方法,只要看什么时候打印输出语句就可以了

    public class Student {
        private int age;
        private String name;
    
        public Student() {
            System.out.println("调用了构造方法");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如图:

    在这里插入图片描述

    我只是创建了Spring的容器,Student中的构造方法就打印了,说明在Spring容器创建时,bean对象就已经进行初始化了

    如果将bean标签中的lazy-init设置为"true"

    <bean class="com.exaple.entity.Student" id="student" lazy-init="true">bean>
    
    • 1

    可以看到并没有任何输出语句

    在这里插入图片描述

    lazy-init就是控制bean是什么时候进行初始化的,类似于"懒汉模式"

    4. init-method

    Spring的init-method属性用于指定一个初始化方法,该方法将在bean创建后立即执行。

    实例:

    <bean class="com.exaple.entity.Student" id="student" init-method="init">bean>
    
    • 1
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Student {
        private int age;
        private String name;
    
        private void init(){
            System.out.println("执行了初始化方法");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    这个属性很简单,就不多说了

    ⭐需要注意的是 init-method设置的方法必须是 空参

    5. destroy-method

    与init-method方法类似,只不过destroy-method设置的方法是在容器销毁时调用的方法

    <bean class="com.exaple.entity.Student" id="student" destroy-method="destroy">bean>
    
    • 1
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Student {
        private int age;
        private String name;
    
        private void init(){
            System.out.println("执行了初始化方法");
        }
    
        private void destroy(){
            System.out.println("执行了容器销毁时的方法");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    destroy-method与init-method方法相同,同样需要是 空参 的方法

    ClassPathXmlApplicationContext的实例对象的close方法就是销毁容器的方法.而ApplicationContext则没有close方法

    6. factory-method和factory-bean

    factory-method和factory-bean都是Spring框架中用于实现依赖注入的两种方式。

    1. factory-method:使用工厂方法模式,通过在配置文件中指定一个工厂类和方法来创建对象。这种方式需要先定义一个工厂类,然后在配置文件中指定该工厂类的全限定名和方法名。
    2. factory-bean:使用工厂Bean模式,通过在配置文件中配置一个工厂Bean来创建对象。工厂Bean是一个普通的Spring Bean,它可以有自己的属性和方法,也可以有其他的Bean作为其属性。在使用时,Spring会自动调用工厂Bean的某个方法来创建对象。

    两种方式的区别在于:

    1. factory-method需要先定义一个工厂类,而factory-bean则不需要。
    2. factory-method只能创建一个类型的对象,而factory-bean可以创建多个不同类型的对象。
    3. factory-method需要在配置文件中指定工厂类和方法名,而factory-bean只需要配置一个普通的Bean即可。
  • 相关阅读:
    OKR管理过程中,如何运用CFR实现组织的高效对话、反馈和认可?
    【单线图的系统级微电网仿真】基于 PQ 的可再生能源和柴油发电机组微电网仿真(Simulink)
    APP授权
    【博客506】k8s扩展调度器以支撑更灵活的GPU调度
    存关于nest js 相关的 文档项目
    隆云通楼宇二氧化碳传感器
    源代码管理——码云Gitee
    Linux权限详解
    LeetCode-1. Two Sum
    sqlite基本操作
  • 原文地址:https://blog.csdn.net/m0_63463510/article/details/134230485