bean的生命周期:
1. 在spring ioc容器(ApplicationContext)加载spring配置文件的时候,就会立即实例化bean
这样,在客户端向ioc容器多次索取同一个bean时,得到的总是同一个实例
2. 在bean实例化之后,就调用bean元素的init-method属性指定的bean的方法
3. 在spring ioc容器即将被关闭的时候,就会调用bean元素的destroy-method指定的方法.
bean的作用域: scope 默认值就是 singleton
1.singleton 单例
此时,bean的生命周期就是默认的情况,与上面一致
1. 在spring ioc容器(ApplicationContext)加载spring配置文件的时候,就会立即实例化bean
这样,在客户端向ioc容器多次索取同一个bean时,得到的总是同一个实例
2. 在bean实例化之后,就调用bean元素的init-method属性指定的bean的方法
3. 在spring ioc容器即将被关闭的时候,就会调用bean元素的destroy-method指定的方法.
2.prototype 多例 保证每次获取bean的时候,都是现场直接实例化!
此时生命周期发生变化,bean的生命周期:
1. 在spring ioc容器(ApplicationContext)加载spring配置文件的时候,不会实例化bean了
而是每次获取bean的时候,都实例化
2. 在bean实例化之后,就调用bean元素的init-method属性指定的bean的方法
3. 在spring ioc容器即将被关闭的时候,就会调用bean元素的destroy-method指定的方法.
3.request 请求范围 web项目中
4.session 会话范围 web项目中
lazy-init对bean实例化的作用:延迟实例化:
1. 当scope取值为singleton时 且lazy-init="false"时,
bean就在spring ioc容器加载配置文件时,直接实例化。
2. 当scope取值为singleton时 且lazy-init="true"时,
bean就在spring ioc容器加载配置文件时,不会实例化。
直接第一次getBean的时候,才实例化
以后第二次getBean的时候,不实例化
以后第三次getBean的时候,不实例化
以后第四次getBean的时候,不实例化
=======================================================
1. 当scope取值为prototype时 且lazy-init="false"时,
------> 在加载配置文件时,都不会实例化,总是在每次getBean的时候,都实例化bean
2. 当scope取值为prototype时 且lazy-init="true"时, /