【Spring】bean的配置

news2024/11/25 19:44:06

文章目录

  • 1. 前言
  • 2. name
  • 3. lazy-init
  • 4. init-method
  • 5. destroy-method
  • 6. factory-method和factory-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>

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

public class Student {
    private int age;
    private String name;

    public Student() {
        System.out.println("调用了构造方法");
    }
}

如图:

在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

4. init-method

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

实例:

<bean class="com.exaple.entity.Student" id="student" init-method="init"></bean>
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private int age;
    private String name;

    private void init(){
        System.out.println("执行了初始化方法");
    }
}

在这里插入图片描述

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

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

5. destroy-method

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

<bean class="com.exaple.entity.Student" id="student" destroy-method="destroy"></bean>
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private int age;
    private String name;

    private void init(){
        System.out.println("执行了初始化方法");
    }

    private void destroy(){
        System.out.println("执行了容器销毁时的方法");
    }
}

在这里插入图片描述

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即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类和对象 下

构造函数 初始化列表 构造函数是在构造类的时候给对象赋初值&#xff0c;并不是给类的成员函数初始化&#xff0c;赋值可以赋多次&#xff0c;而初始化只能初始化一次&#xff0c;这里我们引入初始化列表来对成员函数进行初始化 初始化列表&#xff0c;以冒号 &#xff1a;开…

【JVM系列】- 挖掘·JVM堆内存结构

挖掘JVM堆内存结构 文章目录 挖掘JVM堆内存结构堆的核心概念堆的特点 堆的内存结构内存划分新生代/新生区&#xff08;Young Generation&#xff09;老年代&#xff08;Tenured Generation&#xff09;永久代&#xff08;或元数据区&#xff09;&#xff08;PermGen 或 MetaSpa…

学习视频剪辑:巧妙运用中画、底画,制作画中画,提升视频效果

随着数字媒体的普及&#xff0c;视频剪辑已经成为一项重要的技能。在视频剪辑过程中&#xff0c;制作画中画可以显著提升视频效果、信息传达和吸引力。本文讲解云炫AI智剪如何巧妙运用中画、底画批量制作画中画来提升视频剪辑水平&#xff0c;提高剪辑效率。 操作1、先执行云…

两种MySQL OCP认证应该如何选?

很多同学都找姚远老师说要参加MySQL OCP认证培训&#xff0c;但绝大部分同学并不知道MySQL OCP认证有两种&#xff0c;以MySQL 8.0为例。 一种是管理方向&#xff0c;叫&#xff1a;Oracle Certified Professional, MySQL 8.0 Database Administrator&#xff08;我考试的比较…

“我“何去何从?2024年软件测试职业发展方向?运筹帷幄方能决胜千里之外...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试的职责无非就…

《进化优化》第6章 进化策略

文章目录 6.1 &#xff08;11) 进化策略6.2 1/5规则&#xff1a;推导走廊问题 6.3 μ1进化策略6.4 μλ和&#xff08;μ,λ&#xff09;进化策略6.5 自身自适应进化策略协方差阵自适应CMA 6.1 &#xff08;11) 进化策略 假设f(x)是随机向量x的函数,我们想要最大化适应度f(x).…

Mysql进阶-SQL优化篇

插入数据 insert 我们需要一次性往数据库表中插入多条记录&#xff0c;可以从以下三个方面进行优化。 批量插入数据 一条insert语句插入多个数据&#xff0c;但要注意&#xff0c;每个insert语句最好插入500-1000行数据&#xff0c;就得重新写另一条insert语句 Insert into…

YOLO系列环境配置及训练

目录 前言 一、下载所需 1、Anaconda安装 2、NVIDIA 驱动程序安装 3、CUDA安装 4、CUDNN下载及配置 二、环境配置 1、虚拟环境创建 2、Pytorch安装 3、pycharm环境切换及剩余库的安装 4、YOLO代码的测试及训练配置步骤 &#xff08;1&#xff09;测试 &#xff08…

国际阿里云香港服务器!!!

轻量应用服务器&#xff08;Simple Application Server&#xff09;是可以快速搭建且易于管理的轻量级云服务器&#xff0c;面向单台服务器提供了一键部署应用、一站式域名解析、安全管理以及运维监控等服务。轻量应用服务器操作简单便捷&#xff0c;能让您快速上手部署简单的应…

AVL树

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;AVL树概念&#x1f449;&am…

专业媒体播放软件Movist Pro中文

Movist Pro是一款专为Mac用户设计的专业媒体播放器。它支持广泛的视频和音频格式&#xff0c;包括MP4、AVI、MKV等&#xff0c;并提供了高级播放控件和定制的视频设置。其直观易用的用户界面&#xff0c;使得播放高清视频更为流畅&#xff0c;且不会卡顿或滞后。同时&#xff0…

海康Visionmaster-全局触发:使用全局触发功能执行流 程的方法

我们这里以 TCP 通讯为例&#xff0c;视觉作为 TCP 服务端&#xff0c;与视觉交互的第三方设备作为 TCP 客户端。当 TCP 客户端连接上视觉服务端后&#xff0c;客户端发送字符串 T1,视觉执行流程 1&#xff1b; 客户端发送字符串 T2&#xff0c;视觉执行流程 2。 这样的需求我…

在 CelebA 数据集上训练的 PyTorch 中的基本变分自动编码器

摩西西珀博士 一、说明 我最近发现自己需要一种方法将图像编码到潜在嵌入中&#xff0c;调整嵌入&#xff0c;然后生成新图像。有一些强大的方法可以创建嵌入或从嵌入生成。如果你想同时做到这两点&#xff0c;一种自然且相当简单的方法是使用变分自动编码器。 这样的深度网络不…

Markdown语法教程

Markdown&#xff1a;一种轻量级语言&#xff0c;有简洁的编写方式&#xff0c;能够提高大家的工作效率。 一、标题 1.1 标题 标题的编写格式以#号开始&#xff0c;分别表示h1 ~ h6&#xff0c;注意&#xff1a;# 后面有空格&#xff01; # 一级标题 ## 二级标题 ### 三级标题…

K8s学习笔记——认识理解篇

1. K8s诞生背景 回顾应用的部署&#xff0c;经历了以下几个阶段&#xff1a; 传统部署&#xff1a;物理服务器上运行应用程序。虚拟机部署&#xff1a;物理服务器上安装虚拟机&#xff0c;在虚拟机上运行应用程序。容器部署&#xff1a;物理服务器上安装容器运行时&#xff0…

MINIO minio 安装 报错 问题

minio MINIO 安装 报错 问题 前言问题1问题产生原因分析解决方案 问题2原因分析解决方案 问题3问题产生原因分析解决方案 问题4问题产生 原因分析解决方案 问题5问题产生 原因分析解决方案 关键词&#xff1a; 1: WARNING: MINIO_ACCESS_KEY and MINIO_SECRET_KEY are deprecat…

全能数据分析软件 Tableau Desktop 2019 mac中文版功能亮点

Tableau Desktop 2019 mac是一款专业的全能数据分析工具&#xff0c;可以让用户将海量数据导入并记性汇总&#xff0c;并且支持多种数据类型&#xff0c;比如像是编程常用的键值对、哈希MAP、JSON类型数据等&#xff0c;因此用户可以将很多常用数据库文件直接导入Tableau Deskt…

2019 ICPC 银川题解(A)

赛时没发挥好6题金尾&#xff08;rank38&#xff09;&#xff0c;剩下很多能写的题&#xff0c;其中四个dp&#xff0c;傻眼ing A Girls Band Party&#xff08;背包&#xff09; 有点迷惑的题&#xff0c;当时看只要 5 5 5 张牌一下子想到暴力枚举&#xff0c;结果发现是不…

【漏洞复现】Redis未授权

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、影响版本1.3、漏洞复现环境搭建写入计划任务获取反弹shell利用SSH写公钥&#xff0c;免密登陆利用Redis写WebShell 3、检测未授权访问漏洞检测工具参考 1.1…

《 Hello 算法 》 - 免费开源的数据结构与算法入门教程电子书,包含大量动画、图解,通俗易懂

这本学习算法的电子书应该是我看过这方面最好的书了&#xff0c;代码例子有多种编程语言&#xff0c;JavaScript 也支持。 《 Hello 算法 》&#xff0c;英文名称是 Hello algo&#xff0c;是一本关于编程中数据解构和算法入门的电子书&#xff0c;作者是毕业于上海交通大学的…