概念
singleton--默认Spring Bean作用域,一个BeanFactory有且仅有一个实例
prototype--原型作用域,每次依赖查找和依赖注入生成新Bean对象
request--将Spring Bean存储在ServletRequest上下文中
session--将Spring Bean存储在HttpSession中
application--将Spring Bean存储在ServletContext中
实际只需重点学习singleton,prototype;从spring 5源码中实际声明的枚举值也只有singleton,prototype;
prototype bean作用域
Spring容器没有办法管理prototype Bean的完整生命周期,也没有办法记录实例的存在. 销毁回调方法将不会执行,可以利用BeanPostProcessor进行清扫工作
总结
-
Singleton Bean 无论依赖查找还是依赖注入,均为同一个对象
-
Prototype Bean 无论依赖查找还是依赖注入,均为新生成的对象
-
如果依赖注入集合类型对象,singleton bean和prototype bean 均会存在一个
-
prototpye bean 有别于其他地方的依赖注入 prototype bean
-
无论是singleton还是prototype bean均会执行初始化方法回调
-
不过仅有singleton bean会执行销毁方法回调