Spring bean的作用域和生命周期


bean的作用域

1.singleton,prototype, web環境下:request,session,gloab session

2.通過scope="" 來進行配置

3.對於singleton  spring容器只會創建一個共享實例,prototype則會創建不同的實例

 

bean的生命周期(bean自身的方法,bean級生命周期接口方法,容器級生命周期接口方法)

分為BeanFactory的生命周期和ApplicationContext的生命周期

1、對於BeanFactory

   1、當通過getBean調用某一個bean的時候,首先看容器是否注冊(不是bean實現接口,屬於容器級生命周期方法)了InstantiationAwareBeanPostProcessor接口,如果注冊了,將會調用postProcessBeforeInstantiation()方法。

   2、然后實例化bean

   3、調用InstantiationAwareBeanPostProcessor接口的postProcessAfterInstantiation()方法

   4、設置屬性,調用setter()

   5、調用BeanNameAware的setBeanName()方法

   6、調用BeanFactoryAware中的setBeanFactory()方法

   7、調用InstantiationAwareBeanPostProcessor接口的postProcessBeforeInitialization()方法

   8、 如果容器注冊了BeanPostProcessor接口,調用該接口的postProcessBeforeInitialization()方法

   9、調用InitializingBean接口的afterPropertiesSet()方法

   10、調用init-method屬性配置的方法

   11、調用InstantiationAwareBeanPostProcessor接口的postProcessAfterInitialization()方法

   12、調用BeanPostProcessor接口的postProcessAfterInitialization()方法

   13、如果bean是單例的則把bean實例存入緩沖池由Spring容器繼續關系bean的生命周期,否則交由該bean的調用則管理

   14、調用DisposableBean接口的方法

   15、通過destory-method屬性配置的方法

要往ioc容器手動添加BeanPostProcessor的實現類  (ConfigurableBeanFactory)bf.addBeanPostProcessor(new MyBeanPostProcessor());

ApplicationContext中bean的生命周期和BeanFactoty的基本相同,在BeanFactoryAware接口后增加了一個 ApplicationContextAware接口的setApplicationContext()方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM