Bean的作用域

Spring中的Bean作用域主要涉及单例模式,通常默认为单例,即容器启动时创建一个实例。lazy-init属性用于控制Bean是否延迟加载,若为true则在使用时实例化,否则启动时实例化。设置为false有助于提前发现配置问题并提高运行效率。无状态或状态不可变的对象,如Controller、Service、DAO,适合作为单例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6. Bean的作用域

lazy-init是懒加载, 如果等于true时作用是指Spring容器启动的时候不会去实例化这个bean,而是在程序调用时才去实例化. 默认是false即Spring容器启动时实例化.
默认情况下,被管理的bean只会IOC容器中存在一个实例,对于所有获取该Bean的操作Spring容器将只返回同一个Bean。
容器在启动的情况下就实例化所有singleton 的 bean对象,并缓存与容器中
lazy-init属性(懒加载)
如果为false,则在IOC容器启动时会实例化bean对象,默认false
如果为true,则IOC容器启动时不会实例化Bean对象,在使用bean对象时才会实例化

lazy-init设置为false有什么好处?

1)可以提前发现潜在的配置问题
2)Bean 对象存在于缓存中,使用时不用再去实例化bean,加快程序运行效率

什么对象适合作为单例对象?

一般来说对于无状态或状态不可改变的对象适合使用单例模式。(不存在会改变对象状态的成员变量)比如:controller层、service层、dao层。

什么是无状态或状态不可改变的对象?

实际上对象状态的变化往往均是由于属性值得变化而引起的,比如user类 姓名属性会有变化,属性名的变化一般会引起user对象状态的变化。对于我们的程序来说,无状态对象没有实例变量的存在,保证了线程的安全性,service 层业务对象即是无状态对象。线程安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值