2016 - 2025

感恩一路有你

模板之家 Spring为啥默认把bean设计成单例的?

浏览量:2846 时间:2021-03-14 08:40:22 作者:admin

Spring为啥默认把bean设计成单例的?

Spring作为当下主流的Java框架,它涉及了很多设计模式,如:单例模式、工厂模式、原型模式、模板模式、外观模式等等,而Spring Bean默认是被设计成单例模式的,为什么呢?

什么是单例Bean ?

要想弄清楚Spring Bean为什么默认被设计成单例的,就需要先了解一下什么是单例模式。单例模式是最为常用的软件设计模式,通过单例模式能保证一个类只有一个对象实例。

单例Bean只有在第一次创建Bean时创建,以后此Bean都是复用的,不会频繁的创建对象了。

单例Bean的优点

Spring之所以把Bean默认设计为单例的主要考虑还是性能!单例Bean优点很多,比如说:

1、复用Bean之后减少了新生实例的性能消耗;

2、减少了JVM垃圾回收,因为Bean少了,所以回收的对象也就少了;

3、可以更快的获取到Bean,因为单例对象生成后Spring就把它存入缓存了。

单例Bean的缺点

Bean默认被设计为单例的,其实也是有缺点的,最大的缺点就是无法保证线程安全!若多个请求依懒同一个Bean实例,假设此Bean是有状态的,那就会变得混乱,所以这块要考虑好。


综上,对于一般项目而言,单例Bean是最优的选择,不过在使用单例Bean时不要把Bean设计成有状态的。


以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

什么是单例模式,最好写一个简单的单例模式的实现,谢谢?

单例模式,就是一个类只能有一个实例。无论什么时候来请求,谁来请求,都是同一个实例。

单例模式,每种变成语言都是自己的实现方式,这里我以Java为例。单例有很多种实现方式,如果要一个最简单最完美的实现,那就请看以下代码,这是我前几天刚刚给一个朋友讲解单例时写的。

这种书写方式是Java集合框架的作者Joshua Bloch,在《effective java》中推荐的写法,“单元素的枚举类型已经成为实现Singleton的最佳方法”。

看起来是不是很简单?枚举单例就是这么简单,可以保证多线程并发访问的安全性,还可以防止序列化和反射。

模板之家 邀请函格式模板 简报范文模板

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。