单例bean和原型bean的区别?
warning:
这篇文章距离上次修改已过1768天,其中的内容可能已经有所变动。
1.单例bean指的是在多次请求时spring都只会实例化一个对象,并存在map中并放入缓存中,如果后续有请求会先从缓存中查找bean,如果找不到在实例化一个bean
2.原型bean指的是每次请求都实例化一个bean,没有缓存查找
![请输入图片描述][1]
![请输入图片描述][2]
[1]: https://mmbiz.qpic.cn/mmbiz_jpg/HrWw6ZuXCsjyicIv4OYzCbe0o95NDWa8hwjq7WbVYFfLUMHDaUJTGvVLBeK6lpsvWNto0H2kWxVKhHRQSia3iacIg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
[2]: https://mmbiz.qpic.cn/mmbiz_jpg/HrWw6ZuXCsjyicIv4OYzCbe0o95NDWa8hxsrhKaia2yjJ6VOS1tNI4KxzKQ4HHICPHcrf0iagAXKQ0ELsyUtZxx3A/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
结论:
1、单例bean系统只会实例化一个bean,后续会进行缓存查找,查找不到在实例化一个新的,不会频繁创建对象
2、原型bean每次请求都会实例化一个新的bean,会频繁创建对象
**Spring 为啥把bean默认设计成单例?
为了提高性能
1、少创建实例
2、减少垃圾回收
3、缓存快速获取
有什么劣势那?
如果有状态在并发情况下会出现线程不安全。