news 2026/5/3 4:22:55

Spring的Bean

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring的Bean

目录

1.概念

2.Xml中Bean标签的解释

(1)id属性

(2)class属性

(3)scope 属性

(4)生命周期方法配置

3.创建Bean的三种方式

默认使用无参数的构造方法

静态工厂实例化方式

动态工厂实例化方式

factory-method:

factory-bean:


1.概念

在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean。bean 是由Spring IoC 容器实例化、组装和管理的对象。

2.Xml中Bean标签的解释

(1)id属性

作用:为 Bean 起一个唯一的名字,用于在 Spring 容器中标识这个 Bean。

约束与取值要求:

唯一性:同一配置文件中,每个 Bean 的 id 必须唯一

命名规则:

必须以字母开头

可以使用:字母、数字、连字符(-)、下划线(_)

可以使用“.”(句话,即句号)和“:”(冒号),但不推荐

不能出现特殊字符(如 @、#、$、%、空格等)

(2)class属性

作用:指定 Bean 的全限定类名(包括包名)。

要求

必须是类的完整路径,从包名开始到类名结束

这个类必须能被类加载器找到

(3)scope 属性

作用:定义 Bean 的作用范围,即 Bean 实例的生命周期和创建方式。

1. singleton(单例)
特点:Spring 容器中只有一个该 Bean 的实例

生命周期:容器启动时创建,容器关闭时销毁

使用场景:无状态的服务类、工具类等

2. prototype(多例)
特点:每次获取 Bean 时都会创建一个新实例

生命周期:每次 getBean() 时创建,不归容器管理销毁

使用场景:有状态的 Bean,如携带用户数据的对象

3. request
特点:每次 HTTP 请求创建一个新实例

生命周期:请求开始时创建,请求结束时销毁

4. session
特点:同一个 HTTP Session 中共享一个实例

生命周期:Session 创建时创建,Session 失效时销毁


(4)生命周期方法配置

作用:在 Bean 创建后和销毁前执行特定逻辑。

1. init-method
触发时机:Bean 实例化完成、依赖注入完成后执行

作用:初始化资源、建立数据库连接、加载配置等

要求:方法必须是无参的

2. destroy-method
触发时机:容器关闭时(仅对 singleton Bean 有效)

作用:释放资源、关闭连接、保存状态等

要求:方法必须是无参的

3.创建Bean的三种方式

默认使用无参数的构造方法

<bean id="us" class="com.qcbyjy.service.UserServiceImpl" />

测试方法:

/** * 入门程序 */ @Test public void runDefaultConstructor() { //使用Spring的工厂 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //通过工厂获得类 UserService userService = (UserService) context.getBean("userService"); userService.hello(); }

静态工厂实例化方式

package com.qcby.config; import com.qcby.service.Impl.UserServiceImpl; import com.qcby.service.UserService; public class StaticFactory { //静态工厂方式 public static UserService createUserService() { System.out.println("通过静态工厂的方式创建了UserServiceImpl对象"); //此处还可以编写业务逻辑 return new UserServiceImpl(); } }
<!--静态工厂方式--> <bean id="us" class="com.qcby.config.StaticFactory" factory-method="createUserService"/>

测试方法:

/** * 测试静态工厂方式 */ @Test public void testStaticFactory() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService staticUserService = (UserService) context.getBean("us"); System.out.print("静态工厂方式:"); staticUserService.hello(); }

动态工厂实例化方式

package com.qcby.config; import com.qcby.service.Impl.UserServiceImpl; import com.qcby.service.UserService; /** * 动态工厂方式 */ public class DFactory { public UserService createUs(){ System.out.println("动态工厂的方式......"); return new UserServiceImpl(); } }

配置bean

<!--实例化工厂方式--> <bean id="dFactory" class="com.qcby.config.DFactory"/> <bean id="us1" factory-bean="dFactory" factory-method="createUs"/>

测试方法:

/** * 测试动态工厂方式 */ @Test public void testInstanceFactory() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService instanceUserService = (UserService) context.getBean("us1"); System.out.print("实例工厂方式:"); instanceUserService.hello(); }

factory-method

指定一个静态方法来创建 Bean 实例,而不是通过构造方法

factory-bean

指定一个已经存在的 Bean(工厂对象)及其非静态方法来创建新的 Bean。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 1:21:20

ArcObjects SDK 10.8:从零开始的GIS开发实战指南

ArcObjects SDK 10.8&#xff1a;从零开始的GIS开发实战指南 【免费下载链接】arcobjects-sdk-community-samples This repo contains the source code samples (.Net c#, .Net vb, and C) that demonstrate the usage of the ArcObject SDK. 项目地址: https://gitcode.com…

作者头像 李华
网站建设 2026/5/2 16:10:45

Windows Server 2016 中文版、英文版下载 (2025 年 12 月更新)

Windows Server 2016 中文版、英文版下载 (2025 年 12 月更新) Windows Server 2016 x64 Version 1607 (updated Dec 2025) 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2016/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a…

作者头像 李华
网站建设 2026/4/23 12:00:46

pycharm下新建一个项目并加入svn

因为要计划要经常新建工程&#xff0c;不再是都放在一个工程里面搞应用实现&#xff0c;另外还要加入svn版本库管理&#xff0c;所以稍微整理了一下新建的过程&#xff0c;供参考。 1、python版本 C:\Users\yegang>python -V Python 3.11.02、安装django并升级pip C:\Users\…

作者头像 李华
网站建设 2026/5/1 0:20:55

用于电力系统瞬态稳定性评估的机器学习。 从数据挖掘和机器学习的角度来解决电力系统的稳定性

用于电力系统瞬态稳定性评估的机器学习。 从数据挖掘和机器学习的角度来解决电力系统的稳定性&#xff0c;该模型由去噪堆叠自编码器和投票集成分类器构建。 集成由来自支持向量机和随机森林的池化预测组成。 报告并讨论了分类器在电力系统测试用例中的应用结果。 TSA问题的ML应…

作者头像 李华
网站建设 2026/5/1 4:04:41

三小时前刚调通的新鲜案例还在冒热气。ZYNQ这玩意儿玩TCP传输,核心就三件事:怎么把PL数据塞进DDR、怎么让LWIP别偷懒、怎么让DMA别堵车。直接上干货

ZYNQ平台基于LwIP实现TCP数据通信&#xff0c;PL端产生数据传递到PS端的DDR3&#xff0c;再利用LwIP通过TCP传输到PC端。 实测数据吞吐量能到达到500Mbps左右&#xff0c;最高能到700M 长达一小时的视频&#xff0c;从硬件设计的注意事项&#xff0c;到软件设计的思路都包含了。…

作者头像 李华
网站建设 2026/4/26 16:27:19

Mcdowell-CV:专业级LaTeX简历模板终极指南

Mcdowell-CV&#xff1a;专业级LaTeX简历模板终极指南 【免费下载链接】mcdowell-cv A Nice-looking CV template made into LaTeX 项目地址: https://gitcode.com/gh_mirrors/mc/mcdowell-cv 在当今竞争激烈的求职市场中&#xff0c;一份专业、整洁的简历是脱颖而出的关…

作者头像 李华