Webアプリケーションの起動時にいくつかの初期化(タイマーとロギング)を行います。 ContextListenerを使用することはできません.ContextListenerを使用することはできません。私は "afterWebAppHasLoadedAndEverythingyIsSetUp()"のような単純なフックが必要です。 存在しますか?Java Web Appでスタートアップフックを宣言するにはどうすればいいですか?
0
A
答えて
2
ApplicationContextは、Beanをロードするときに特定のタイプのイベントを発行します。
ApplicationContextのイベント処理は、ApplicationEventクラスとApplicationListenerインターフェイスを介して提供されます。したがって、BeanがApplicationListenerを実装する場合、ApplicationEventがApplicationContextにパブリッシュされるたびに、そのBeanに通知されます。
次のイベントがスプリング
- によって提供されるContextRefreshedEvent
- ContextStartedEvent
- ContextStoppedEvent が
- ContextClosedEvent
を次のようにまずApplicationListenerの実装を作成
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;
public class CStartEventHandler
implements ApplicationListener<ContextStartedEvent>{
public void onApplicationEvent(ContextStartedEvent event) {
System.out.println("ContextStartedEvent Received");
}
}
次に、クラスをBeanとしてSpringに登録するだけです。
1
私が推奨するSpringブートを使用している場合、アプリケーションの起動後に次のCommandLineRunner Beanを使用して初期化作業を実行できます。あなたはすべての春の豆を準備することができるでしょう、以下はコードスニペットです。
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class MyApplication extends SpringBootServletInitializer {
// here you can take any number of object which is anutowired automatically
@Bean
public CommandLineRunner init(MyService service, MyRepository repository) {
// do your stuff with the beans
return null;
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
関連する問題
- 1. CXF - 属性を宣言するにはどうすればいいですか?
- 2. テンプレートポインタをテンプレートメソッドに宣言するにはどうすればいいですか?
- 3. sbtプラグインを宣言するにはどうすればいいですか?
- 4. ダイナミックモデルを宣言するにはどうすればいいですか? angularjs
- 5. ArraylistでString []を宣言するにはどうすればよいですか?
- 6. SystemCでデストラクタを宣言するにはどうすればよいですか?
- 7. 関数宣言でC++のmem_fn(member_function)を宣言するにはどうすればよいですか?
- 8. JavaでEnum内のフィールドを宣言するにはどうすればいいですか?
- 9. JComboBoxを宣言するにはどうすればよいですか?
- 10. JaxbがJavaで宣言型で非整列化を行うにはどうすればよいですか?
- 11. Javaで特定の型の変数を宣言するにはどうすればよいですか?
- 12. Java APIのメソッドをローカルプロジェクトで非推奨と宣言するにはどうすればよいですか?
- 13. arffファイルの文字列にシンボル(@など)を宣言するにはどうすればいいですか?
- 14. JavaScriptヘルパーで変数を一度だけ宣言するにはどうすればいいですか?
- 15. xml-schemaで型を宣言するにはどうすればいいですか?
- 16. Spring 3.1アプリケーションでJSFマネージドBeanを宣言するにはどうすればいいですか?
- 17. Kotlinにジェネリック型のフィールドを含むクラスを宣言するにはどうすればいいですか?
- 18. エンティティを即座に宣言するにはどうすればいいですか?
- 19. activeadminでネストされたリソースを宣言するにはどうすればいいですか?
- 20. Androidで新しいシステムプロパティを宣言するにはどうすればいいですか?
- 21. PHPリクエストで長いヘッダー宣言を処理するにはどうすればよいですか?
- 22. iOS5のプリミティブ型のプロパティ宣言ではどうすればよいですか?
- 23. WPFでプライベート内部クラスからリソースを宣言するにはどうすればいいですか?
- 24. クラスをクラス内で宣言して後で定義するにはどうすればいいですか?
- 25. ACEとAndroidの競合する宣言(CPU_SET_T)を解決するにはどうすればよいですか?
- 26. RenderScriptでローカル/プライベートアレイを宣言するにはどうすればいいですか?
- 27. サブクラスで宣言せずにコンストラクタを使用できるように、コンストラクタを基底クラスで宣言するにはどうすればよいですか?
- 28. Erlang:モジュールの型宣言をインポートするにはどうすればいいですか?例えば
- 29. Kotlinアノテーションの配列値を宣言するにはどうすればいいですか?
- 30. クラス内でImageViewを宣言するにはどうすればいいですか?