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、缓存快速获取
有什么劣势那? 如果有状态在并发情况下会出现线程不安全。