4
我是Spring Boot的新手,我有一個Spring Boot應用程序,似乎忽略了@PreDestroy註釋 - 當我從命令行或通過Eclipse運行時,我是從未看到@PreDestroy代碼正在運行時應用程序是關斷(例如,經由CTRL-C)Spring Boot @PreDestroy註解不起作用
代碼如下...
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註釋在方法上用作回調通知,表明實例正在** ** ** ** **中被移除的過程中,它不是您的應用程序的預關閉 –
因此在運行的應用程序中使用ctrl-c或kill時,@PreDestroy不會啓動?有什麼我可以趕上這個事件? –
finbin
看看這個問題http://stackoverflow.com/questions/23936162/register-shutdownhook-in-web-application –