私はSpringブートを初めて使いました。@PreDestroyアノテーションを無視しているようなSpringブートアプリケーションがあります。コマンドラインやEclipseから実行すると、Springブート@PreDestroyアノテーションが動作しない
コードは以下の通りです決してアプリケーションがシャットダウンされるとき、実行している@PreDestroyコードを見ていない(例えば経由してCtrl + Cキー)...
Application.java:
@SpringBootApplication
public class Application {
@Autowired
private MessageProcessor messageProcessor;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@PostConstruct
public void init() {
messageProcessor.run();
}
}
メッセージプロセッサ設定:
@Configuration
public class MessageProcessorConfiguration {
@Bean
public MessageProcessor messageProcessor() {
return new MessageProcessorImpl();
}
}
メッセージプロセッサ:コンテキスト作成 中
public class MessageProcessorImpl implements MessageProcessor {
@Override
public void run() {
while (isActive()) {
…
}
}
@PreDestroy
public void shutdown() {
System.out.println("MessageProcessorImpl - shutting down");
}
}
PreDestroyアノテーションは、** container **によってインスタンスが**削除**されていることを通知するコールバック通知としてメソッドに使用されます。アプリケーションの事前シャットダウンではありません。 –
So @PreDestroyは、実行中のアプリケーションでctrl-cを使うか、をkillすると起動しませんか?このイベントをキャッチするために何かできることはありますか? –
finbin
この質問を見るhttp://stackoverflow.com/questions/23936162/register-shutdownhook-in-web-application –