spring的bean为什么是单例的?spring可以配置多例对象么什么时候用单例?什么时候用多例?

  1. spring可以配置多例对象么

    :可以。spring中bean可以被定义为两个模式:单例和多例

    1. 单例:只有一个共享实例的存在,所有对这个bean的请求都会返回这个唯一的实例。不管new多少次。即所有请求都有一个对象来处理

    2. 多例:对这个bean的每次请求都会创建一个新的bean实例,类似于new。

  2. 什么时候用单例?什么时候用多例?

    :当对象含有可改变状态时(在实际应用中该状态会改变),则多例,否则单例。例如dao和service层的数据一般不会有响应的属性改变,所以考虑单例,而controller层会存储很多需要操作的vo类,此时这个对象的状态就会被改变,则需要使用多例

  3. 如何配置多例?

    :在bean时,加一个scope = “singleton”;如果不写个默认是true,也就是单例的,写了就是多例的

  4. spring的bean为什么是单例的?

    :为了提高性能。

    1. 由于不会每次都新创建新对象,所以就减少了新生成实例的消耗。因为spring会通过反射或者cglib来生成bean实例这都是耗性能的操作,其次给对象分配内存也会涉及复杂算法。

    2. 减少JVM垃圾回收,由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。

    3. 可以快速获取到bean,因为单例的获取bean操作除了第一次生成之外其余的都是从缓存里获取的所以很快。

    4. 缺点就是在并发环境下可能会出现线程安全问题

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值