当我在intelliJ中运行我的程序然后使用STOP按钮时,它不会调用我创建的关闭钩子.在intelliJ中有没有办法让那些叫做关机?
谢谢
我添加了一个关闭钩子:
Runtime.getRuntime().addShutdownHook(myShutdownHook);
Run Code Online (Sandbox Code Playgroud)
它正常工作正常,但是当我单击Eclipse中的红色停止按钮时则不行.有没有办法在Eclipse中调用关闭钩子?
我有一个Spring Boot + Spring Data Redis/KeyValue项目.我设置了一个Spring配置文件来运行嵌入了所有依赖项的应用程序.所以在启动时,我启动了一个嵌入式Redis服务器.当我在Eclipse中启动时,一切正常,除了我希望在停止Spring Boot应用程序时停止Redis服务器.所以我设置了几个关闭钩子,但是当我从Eclipse终止应用程序时它们没有被调用.
他们是关于SO的类似问题,我创建了这个问题,希望有一个Redis解决方案.这些类似的问题也没有特定于Spring Boot.
我尝试了很多东西:
ExitCodeGenerator;DisposableBean; @PreDestroy;他们都不被称为.
也许有一个Redis选项,超时,保持活着..我不知道的盒子外面的东西? 当我的Spring Boot应用程序突然停止时,如何确保Redis服务器停止?
=>我看到这个嵌入式Redis用于弹簧启动,但@PreDestroy在意外杀死应用程序时才被调用.
以下是一些类似的问题:
我还在eclipse.org上看到这篇文章,讨论在从eclipse停止应用程序时如何调用shutdown hook:正常关闭Java应用程序
这是我的所有相关代码:
用于在启动时启动嵌入式 Redis服务器的组件(我尝试将其停止!!):
@Component
public class EmbeddedRedis implements ExitCodeGenerator, DisposableBean{
@Value("${spring.redis.port}")
private int redisPort;
private RedisServer redisServer;
@PostConstruct
public void startRedis() throws IOException {
redisServer = new RedisServer(redisPort);
redisServer.stop();
redisServer.start();
}
@PreDestroy
public void stopRedis() { …Run Code Online (Sandbox Code Playgroud)