Springコンテナの初期化が完了したら、メソッドを実行します.
2446 ワード
Springコンテナの初期化が完了したら、メソッドを実行します.
は を実現する.使用注記:`@PostConstruct`
Webプロジェクトの開発、特にエンタープライズクラスのアプリケーション開発を行う場合、エンジニアリングが開始されると多くの前置検査を行うことが多い.
例えば、私たちのグループが使用禁止しているMysqlのグループを使用しているかどうかをチェックします.concat関数は,プロジェクトを使用すると起動できず,どのファイルのxmlファイルがこの関数を使用しているかを指摘する.
Springのwebプロジェクトでは、Springの起動プロセスに介入することができます.SpringコンテナですべてのBeanを初期化した後、いくつかの操作を行いたいと思っています.このとき、インタフェースを実現することができます.
1 2 3 4 5 6 7
Springのプロファイルに注入を追加します.
1 2
ApplicationListener
ApplicationListener
の実装Webプロジェクトの開発、特にエンタープライズクラスのアプリケーション開発を行う場合、エンジニアリングが開始されると多くの前置検査を行うことが多い.
例えば、私たちのグループが使用禁止しているMysqlのグループを使用しているかどうかをチェックします.concat関数は,プロジェクトを使用すると起動できず,どのファイルのxmlファイルがこの関数を使用しているかを指摘する.
Springのwebプロジェクトでは、Springの起動プロセスに介入することができます.SpringコンテナですべてのBeanを初期化した後、いくつかの操作を行いたいと思っています.このとき、インタフェースを実現することができます.
1 2 3 4 5 6 7
package
com.yk.test.executor.processor
public
class
InstantiationTracingBeanPostProcessor
implements
ApplicationListener {
@Override
public
void
onApplicationEvent(ContextRefreshedEvent event) {
// , spring 。
}
}
Springのプロファイルに注入を追加します.
1 2
class
=
"com.yk.test.executor.processor.InstantiationTracingBeanPostProcessor"
/>
しかしこのとき、Webプロジェクト(spring mvc)では、rootアプリケーションcontextと、 たち のprojectName-servlet context(rootアプリケーションcontextのサブコンテナとして)の2つのコンテナが するという があります.
この 、onApplicationEventメソッドが2 されます. の を するために、rootアプリケーションcontextの が した にのみ コードを び すことができ、 のコンテナの が した は、 の もせずに、 のコードを び すことができます.
のようになります.
1 2 3 4 5 6 @Override
public
void
onApplicationEvent(ContextRefreshedEvent event) {
if
(event.getApplicationContext().getParent() ==
null
){
//root application context parent, .
// , spring 。
}
}
:`@PostConstruct`
はもっと な は :`@PostConstruct`を って、 が なときに する にこの を けるだけでいいです.
の は のとおりです.package javax.annotation;
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
@Documented
@Retention (RUNTIME)
@Target(METHOD)
public @interface PostConstruct {
}
:http://www.cnblogs.com/rollenholt/p/3612440.html