当前位置: 首页 > news >正文

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。

http://www.jsqmd.com/news/78190/

相关文章:

  • 2025年氙灯光源哪家强哪家好/优质源头厂家/实力生产商/知名品牌推荐,国内外代表厂商与核心产品盘点 - 品牌推荐大师1
  • 2025年阳光板、PC阳光板、耐力板源头生产厂家最新实力推荐,亲测解析! - 深度智识库
  • 2025年通信干扰模拟器供应商TOP10排行榜,光时域反射仪/无线电综合测试测试仪/光纤熔接机/以太网测试仪通信干扰模拟器供应商找哪家 - 品牌推荐师
  • 极速AI助手快速接入免费腾讯混元大模型教程
  • 中医师承出师培训班哪家好?阿虎医考师承怎么样? - 资讯焦点
  • 2025年12月耐力板源头厂家最新推荐:PC耐力板,实心耐力板,耐力板生产 - 深度智识库
  • 2025年水解聚丙烯酰胺直销厂家权威推荐榜单:高分子量聚丙烯酰胺/水处理聚丙烯酰胺/聚丙烯酰胺絮凝剂源头厂家精选 - 品牌推荐官
  • 2025年苏州夹爪品牌推荐:柔触机器人以专业实力赢得市场认可 - 品牌2025
  • nvcc编译器安装
  • 在WebStorm中合并分支
  • 2025年市面上知名的安检门厂商怎么找,行业内安检门厂商排行榜单TOP企业引领行业技术新高度 - 品牌推荐师
  • 2025Q4 电永磁夹具厂家口碑榜:宏兴盛凭实战案例与用户好评登顶 - 品牌智鉴榜
  • Comate Spec模式实测:让AI编程更精准可靠
  • 事件问答的语料库级评估与印度警察事件数据集解析
  • 用户搜“产品名+Reviews”|但我的评测页排名总比不过亚马逊,怎么抢流量?
  • JAVA家政系统:开启同城上门服务新体验
  • 2025年整流桥GBP制造企业推荐榜单:整流桥GBL‌/整流桥GBU‌/整流桥KBJ源头厂家精选 - 品牌推荐官
  • 散修带你入门鸿蒙应用开发基础第十节:接口的核心约束与契约设计 - 鸿蒙
  • 致臻制造,温柔以待:2025年优质柔性“手指夹爪”供应商深度解析 - 品牌2025
  • 突破性能瓶颈:Tauri中WebAssembly的实战优化指南
  • 2025年度口碑火锅品牌盘点,本地人都在吃,川渝火锅/特色美食/重庆火锅/美食/老火锅/火锅店/火锅火锅品牌有哪些 - 品牌推荐师
  • 2025年丰收膜供货商权威推荐榜单:增产膜/西瓜增产农膜/防尘农膜实力供货商精选 - 品牌推荐官
  • 地理坐标计算神器:Geodesy库的完整使用指南
  • 推荐几家海外社媒运营推广公司,B2B海外社媒营销公司怎么选 - 品牌2025
  • 【MWORKS使用技巧71】使用Julia Function时,调用Syslab内置的函数运行报错如何处理?
  • 24、恶意软件样本分析全流程指南
  • 炉石传说智能脚本实战攻略:从零开始掌握自动化卡牌对战
  • 【MWORKS使用技巧72】1分钟带你了解在Sysblock中如何定义函数及算法
  • 2025年汽车海外营销推广服务商推荐,助力外贸企业通过 Facebook、LinkedIn、TikTok 、INS、Google低成本营销推广高效获客 - 品牌2025
  • 3步解锁RPG Maker加密资源:解密工具完全使用指南