1. 程式人生 > >理解spring的生命週期

理解spring的生命週期

1.

public DemoSpring(){

        //例項化一個空物件 

}

2.

.public void setBeanProperties(String s) {

        //將值和引用注入到Bean對應的屬性中

}

3.實現BeanNameAware

    @Override

    public void setBeanName(String s) {

        //獲得Bean的ID

}

4.實現BeanFactoryAware

    @Override

    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {

        //獲取spring容器,beanFactory需要手動傳入

}

或者

實現ApplicationContextAware

@Override

public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

    //獲取spring容器,applicationContext會自動作為引數傳入

    applicationContext = this.applicationContext;

 }

5.實現BeanPostProcessor

    @Override

    public Object postProcessBeforeInitialization(Object o, String s) throws BeansException {

        //前初始化

        return null;

}

6.實現InitializingBean

    @Override

    public void afterPropertiesSet() throws Exception {

        //Bean的屬性設定成功後(被spring容器),初始化

        //不鼓勵使用該介面,因為這樣會將程式碼與Spring耦合在一起

}

7.實現BeanPostProcessor

    @Override

    public Object postProcessAfterInitialization(Object o, String s) throws BeansException {

        //後初始化

        return null;

}

8.

此時Bean就一直留在上下文中被應用使用了,直到應用上下文被銷燬

9.實現DisposableBean

    @Override

    public void destroy() throws Exception {

        //Bean銷燬前執行的方法

        //允許在容器銷燬該bean的時候獲得一次回撥

        //不鼓勵使用該介面,因為這樣會將程式碼與Spring耦合在一起

}

注:

還可以用xml配置的destroy-method來釋放資源,這樣不會和spring耦合