1、豆ライフサイクル:
の破壊の豆の作成--- ----初期化プロセス
コンテナ管理のBeanのライフサイクル;
私たちは、初期化や破壊方法をカスタマイズすることができ、Beanコンテナでから私たちを呼び出すために、現在のライフサイクル時間に初期化と破壊方法が定義されました。
2、初期化および破壊方法を指定します。
指定INIT-方法及び破壊法を@Beanによっては、
初期化:オブジェクトが作成され、良好な初期化方法は、(単一インスタンスまたはマルチインスタンス)と呼ばれている割り当てられた後、
破壊方法:単一インスタンス:オブジェクトが破壊されるか、または密閉容器は、このメソッドを呼び出します。
マルチインスタンス:それは破壊メソッドを呼び出すことはありませんので、コンテナは、Beanを管理しません。
@Component パブリック クラスの車{ パブリックカー(){ System.out.printlnは( "カーコンストラクタ..." ); } 公共 ボイドのinit(){ System.out.printlnは( "車...のinit ..." )。 } 公共 ボイドdetory(){ System.out.printlnは( "車... detory ..." )。 } }
コンテナに豆で:
@Configuration パブリック クラスMainConfigOfLifeCycle { // @Scope( "プロトタイプ") @Bean(にinitMethod = "INIT"、destroyMethodを= "detory" ) 公衆カー車(){ 返す 新しい(車を)。 } }
図3は、InitializingBeanビーン(定義された初期化ロジック)------ afterPropertiesSet()メソッドを有することによって達成しました
DisposableBean(定義された論理破壊)---破壊()メソッド。
@Component パブリック クラスキャット実装InitializingBean、DisposableBean { パブリックキャット(){ System.out.printlnは( "猫のコンストラクタ..." ); } @Override 公共 ボイド)(破壊スロー例外を{ // TODO自動生成されたメソッドスタブ のSystem.out.println( "猫は... ...破壊します" ); } @Override 公共 ボイド afterPropertiesSet()がスロー例外{ // TODO自動生成方法スタブを System.out.println( "猫... afterPropertiesSet ..." ); } }
図4は、JSR250を使用することができます。
@PostConstruct:豆の作成は完了し、プロパティの割り当てが完了すると、初期化方法を実行します
@PreDestroy:私たちは豆の容器の破壊前にクリーンアップしていきましょう
@Component パブリック クラス犬{ パブリック犬(){ System.out.printlnは( "犬のコンストラクタ..." ); } // オブジェクトが作成され、割り当てられた後、コール @PostConstruct 公共 ボイドのinit(){ System.out.printlnは( " PostConstruct @ .... ...犬" ); } // オブジェクトの除去前に容器 @PreDestroy 公共 ボイドdetoryを(){ System.out.printlnは( "ドッグザPreDestroy @ ... ... " ); } }
5、春はBeanPostProcessor、豆ポストプロセッサを提供してくれます
【BeanPostProcessor]インターフェース:ビーンポストプロセッサ;
豆の前及び後の処理いくつかの初期化;
postProcessBeforeInitialization:初期化の前に作業
postProcessAfterInitialization:初期化作業後
/ ** *ポストプロセッサは:初期化処理の後前 *後処理を容器に加え* / @Component パブリック クラス MyBeanPostProcessor 実装BeanPostProcessor { @Override パブリックオブジェクトpostProcessBeforeInitialization(豆、のbeanName文字列オブジェクト)がスローBeansException { /を/ TODO自動生成されたスタブメソッド のSystem.out.println(「postProcessBeforeInitialization ...」のbeanName + +「=>」+ 豆)は、 戻り豆を、 } @Override パブリックオブジェクトpostProcessAfterInitialization(豆、のbeanName文字列オブジェクト)スローBeansExceptionを{ // TODO自動生成方法スタブ のSystem.out.println( "postProcessAfterInitialization ..." +のbeanName + "=>" + 豆)。 リターン豆。 } }