Spring bean的做用域和生命週期

bean的做用域web

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

2.經過scope="" 來進行配置session

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

 

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

分爲BeanFactory的生命週期和ApplicationContext的生命週期prototype

一、對於BeanFactory接口

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

   二、而後實例化bean作用域

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

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

   五、調用BeanNameAware的setBeanName()方法

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

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

   八、 若是容器註冊了BeanPostProcessor接口,調用該接口的postProcessBeforeInitialization()方法

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

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

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

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

   1三、若是bean是單例的則把bean實例存入緩衝池由Spring容器繼續關係bean的生命週期,不然交由該bean的調用則管理

   1四、調用DisposableBean接口的方法

   1五、經過destory-method屬性配置的方法

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

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

相關文章
相關標籤/搜索