ホームページ  >  記事  >  Java  >  Springのライフサイクルの詳細な説明

Springのライフサイクルの詳細な説明

coldplay.xixi
coldplay.xixiオリジナル
2020-06-23 14:40:596356ブラウズ

Springのライフサイクルの詳細な説明

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。