Basic#7 Bean LifeCycle Callback
7. Bean LifeCycle Callback
1. Bean LifeCycle callback
アプリケーションの起動時にデータベース接続またはネットワークsocket接続を事前に確立します.したがって、これらの接続を事前に準備または切断するには、beanの作成と終了時間を知る必要があります.
Spring Beanには、次のライフサイクルがあります.
Springコンテナ→Spring bean作成→DI→初期化コールバック→使用→破棄前コールバック→Spring終了
このためSpringでは,DIの後に必要なデータを利用できるため,コールバックにより時点を通知する機能を提供している.
オブジェクトの作成と初期化を分離しましょう.
ジェネレータはパラメータを受信し、メモリを割り当ててオブジェクトを作成します.(論理は通常簡単です)
これに対して、初期化と接続操作は煩雑なタスクを実行するため、メンテナンスの観点から管理を分離することが有利である.
2. Interface
Springが提供するインタフェースを使用してコールバックを使用できます.
afterPropertiesSet()
およびdestory()
の方法を上書きし、それぞれ開始/終了時に実行したい論理を呼び出せばよい.public class NetworkClient implements InitializingBean, DisposableBean {
@Override
public void afterPropertiesSet(){
// DB 연결
}
@Override
public void destory() throws Exception {
// DB 연결 해제
}
}
このインタフェースはspring専用インタフェースで、springに依存する問題があり、外部ライブラリには適用されません.そのため、今はあまり使われていない方法です.3.bean登録の初期化
前に使用したメソッドは、インタフェース宣言のmethodを上書きすることによって実現されるため、メソッド名を変更することも外部ライブラリに適用することもできません.またspring専用インタフェースが継承されているため,コードに依存する.
この問題を解決するには、beanオブジェクト上で任意に初期化/終了メソッドを作成し、設定情報としてロードして使用する方法があります.コードではなく構成情報を使用するためspringに依存せず、外部ライブラリにも適用できます.
public class NetworkClient {
public void init(){
// DB 연결
}
public void close(){
// DB 연결 해제
}
}
@Bean
注記では、initメソッドとdestroyメソッドをメソッド名にマッピングすればよい.@Configuration
public class LifeCycleConfig {
@Bean(initMethod = "init", destroyMethod = "close")
public NetworkClient networkClient(){ return new NetowkrClient(); }
ほとんどの方法は、close
またはshutdown
の名前で終了する方法である.detoyMethodのデフォルト値は(inferred)
で、終了メソッドの名前がcloseまたはshutdownの場合は直接呼び出すことができます.4.Annotationの使用
上記の手順は注釈だけでさらに短縮できます.initメソッドとdestroyメソッドにそれぞれ
@PostContrcut
と@PreDestroy
をマークすればよい.@PostConstruct
public void init(){
// DB 연결
}
@PreDestroy
public void close(){
// DB 연결 해제
}
🛠 更新を続行する必要があります2022.04.15首
Reference
この問題について(Basic#7 Bean LifeCycle Callback), 我々は、より多くの情報をここで見つけました https://velog.io/@dev2danis/Spring-Basic7-Bean-LifeCycle-Callbackテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol