springBean的生命周期
一、创建过程
二、创建机制
首先理解scope:
- Singleton(单例) 在整个应用中,只创建bean的一个实例
- Propotype(原型) 每次注入或者通过Spring应用上下文获取的时候,都会创建一个新
的bean实例。 - Session(会话) 在Web应用中,为每个会话创建一个bean实例。
- Request(请求) 在Web应用中,为每个请求创建一个bean实例。
他们是什么时候创建的:
1 一个单例的bean,而且lazy-init属性为false(默认),在Application Context创建的时候构造
2 一个单例的bean,lazy-init属性设置为true,那么,它在第一次需要的时候被构造.
3 其他scope的bean,都是在第一次需要使用的时候创建
三、销毁时间:
1 单例的bean始终 存在与application context中, 只有当 application 终结的时候,才会销毁
2 和其他scope相比,Spring并没有管理prototype实例完整的生命周期,在实例化,配置,组装对象交给应用后,spring不再管理.只要bean本身不持有对另一个资源(如数据库连接或会话对象)的引用,只要删除了对该对象的所有引用或对象超出范围,就会立即收集垃圾.
3 Request: 每次客户端请求都会创建一个新的bean实例,一旦这个请求结束,实例就会离开scope,被垃圾回收.
4 Session: 如果用户结束了他的会话,那么这个bean实例会被GC.