spring中InitializingBean和@Bean的初始化,bean初始化


InitializingBean接口聽過bean的初始化防范,只包括afterPropertiesSet方法,凡是繼承接口的類,在初始化bean的時候都會執行該方法。

import org.springframework.beans.factory.InitializingBean;
public class TestInitializingBean implements InitializingBean{
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("ceshi InitializingBean");        
    }
    public void testInit(){
        System.out.println("ceshi init-method");        
    }
}

bean的InitMethod和DestroyMethod

1:在配置類中 @Bean(initMethod = "init",destroyMethod = "destory")注解指定
2:實現InitializingBean重寫其afterPropertiesSet方法,重寫DisposableBean重寫destroy方法
3:利用java的JSR250規范中的@PostConstruct標注在init方法上,@PreDestroy標注在destroy注解上

需要注意:

單實例bean,容器啟動時創建 對象

多實例bean,沒次獲取時創建對象

初始化:對象創建完成,復制完成,調用初始化方法

銷毀:單實例,容器關閉時調用,多實例,容器不會銷毀,只能手動調用銷毀方法

 

類:


public class Car {

public Car() {
System.out.println("Car's Constructor..");
}

public void init(){
System.out.println("Car's Init...");
}

public void destory(){
System.out.println("Car's Destroy...");
}

}

配置類:

@Bean(initMethod = "init",destroyMethod = "destory") 

public Car car(){

return new Car(); 

}

總結:

1、Spring為bean提供了兩種初始化bean的方式,實現InitializingBean接口,實現afterPropertiesSet方法,或者在配置文件中通過init-method指定,兩種方式可以同時使用。

2、實現InitializingBean接口是直接調用afterPropertiesSet方法,比通過反射調用init-method指定的方法效率要高一點,但是init-method方式消除了對spring的依賴。

3、如果調用afterPropertiesSet方法時出錯,則不調用init-method指定的方法。

 



 


免責聲明!

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



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