Spring ライフサイクルの詳細な説明:
1. @Bean の初期化と破棄
1.1 Bean のライフ サイクル:
Bean の作成プロセス-----初期化-----破棄
1.2 コンテナのライフ サイクル-managed Bean:
初期化メソッドと破棄メソッドをカスタマイズできます。Bean が現在のライフサイクルに達すると、コンテナーはカスタムの初期化メソッドと破棄メソッドを呼び出します。
コンストラクター:
単一インスタンス: コンテナーの作成時に初期化されます
マルチインスタンス: オブジェクトを取得するたびに作成します
BeanPostProcessor.postProcessBeforeInitialization
Initialization:
オブジェクトが作成されて割り当てられ、初期化メソッドが呼び出されます。 BeanPostProcessor.postProcessAfterInitialization
Destruction:
単一インスタンス: コンテナーが閉じられたとき
複数インスタンス: コンテナーはこの Bean を管理せず、コンテナーは破棄メソッドを呼び出しません。
1. Initialization メソッドと破棄メソッドを指定する
@Bean で init-method と destroy-method を指定する;
2. Bean で InitializingBean を実装する (初期化ロジックを定義)
DisposableBean (破棄ロジックを定義)
3. JSR250 仕様を使用できます:
@PostConstruct: Bean が作成され、属性の割り当てが完了した後
@PreDestroy: コンテナーが破棄され、Bean が破棄される前にクリーンアップ作業が呼び出されます
コードは次のとおりです:
a. initMethod および destroyMethod の使用
MainConfig.java
@Configuration@ComponentScan("com.zero.life")public class MainConfig {// @Scope("prototype") @Bean(initMethod = "init",destroyMethod = "destroy") public Phone phone(){ return new Phone(); }} Phone.java public class Phone { public Phone() { System.out.println("Phone初始化构造。。。"); } public void init(){ System.out.println("Phone 初始化方法。。。。"); } public void destroy(){ System.out.println("Phone 销毁方法。。。"); }}
b. InitializingBean および DisposableBean の使用
@Componentpublic class Android implements InitializingBean,DisposableBean { public Android() { System.out.println("android constructor......."); } @Override public void destroy() throws Exception { System.out.println("android destroy........"); } @Override public void afterPropertiesSet() throws Exception { System.out.println("android afterPropertiesSet........"); }}
c. @PostConstruct と @PreDestroy の使用
@Componentpublic class AIIphone { public AIIphone() { System.out.println("AIIphone.... contruct..."); } @PostConstruct public void init(){ System.out.println("AIIphone.....PostConstruct"); } @PreDestroy public void destroy(){ System.out.println("AIIphone......PreDestroy"); }}
2. BeanPostProcessor ポストプロセッサ
BeanPostProcessor[インターフェース]:
Bean のポストプロセッサ:
Bean 内では、初期化の前後にいくつかの処理が実行されます。
1. postProcessBeforeInitialization: 初期化前に動作します
2. postProcessAfterInitialization: 初期化後に動作します
/** * 后置处理器,初始化前后进行处理工作 */@Componentpublic class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessBeforeInitialization....."+beanName+"=>"+bean); return bean;//可对bean进行包装后返回 } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessAfterInitialization....."+beanName+"=>"+bean); return bean;//可对bean进行包装后返回 }}
推奨チュートリアル: 「java ビデオチュートリアル 」
以上がSpringのライフサイクルの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。