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()方法。