首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot @PreDestroy注释不起作用

Spring Boot @PreDestroy注释不起作用
EN

Stack Overflow用户
提问于 2017-04-13 20:50:30
回答 4查看 11.6K关注 0票数 8

我是Spring Boot的新手,我有一个Spring Boot应用程序,它似乎忽略了@PreDestroy注释-当我从命令行或通过Eclipse运行时,我从来没有看到@PreDestroy代码在应用程序关闭时运行(例如通过ctrl-c)。

代码如下...

Application.java:

代码语言:javascript
复制
@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();
    }

}

消息处理器配置:

代码语言:javascript
复制
@Configuration
public class MessageProcessorConfiguration {

    @Bean
    public MessageProcessor messageProcessor() {
        return new MessageProcessorImpl();
    }
}

消息处理器:

代码语言:javascript
复制
public class MessageProcessorImpl implements MessageProcessor {

    @Override
    public void run() {

        while (isActive()) {
           …
        }
    }


   @PreDestroy
   public void shutdown() { 
       System.out.println("MessageProcessorImpl - shutting down");
   }

}
EN

回答 4

Stack Overflow用户

发布于 2017-09-25 18:48:50

Spring Boot寄存器在上下文创建期间的关闭钩子,参见org.springframework.context.support.AbstractApplicationContext#registerShutdownHook方法。因此,必须在crtl+c组合上关闭上下文(如果您通过java -jar app.jar命令运行您的应用程序),这反过来会触发@Predestroy方法。这对我很有效。

我在您的代码中看不到任何注释。我建议使用@Component注解来注释MessageProcessorImpl bean,而不是手动使用@Bean声明。

票数 2
EN

Stack Overflow用户

发布于 2019-11-20 00:24:43

当在bean上使用时,@PreDestroy不能使用Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE),因为使用此方法生成的bean并不完全由IOC容器管理。

当在bean上使用Scope(value=ConfigurableBeanFactory.SCOPE_SINGLETON)时,@PreDestroy起作用。

票数 1
EN

Stack Overflow用户

发布于 2019-09-13 02:07:44

尝试在xml中添加此行。

代码语言:javascript
复制
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43392828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档