首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @PreDestroy和@PostConstruct注释

Spring @PreDestroy和@PostConstruct注释
EN

Stack Overflow用户
提问于 2011-12-20 22:28:14
回答 2查看 1.8K关注 0票数 1

我正在尝试在一个spring单例bean中启动和停止一个quartz调度器,.But后处理被调用了两次,而predestroy根本没有被调用。This链接说,由于代理,自然会被调用两次,但这会导致后期构造方法中出现异常。我只想在加载单例bean之后调用postConstruct一次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-27 04:48:45

我编写了一个上下文加载器侦听器,并更改了bean侦听器.So,我只能初始化bean一次。

代码语言:javascript
复制
 <listener>
        <listener-class>
              CustomContextLoaderListener
        </listener-class>
    </listener>

public class CustomContextLoaderListener  extends  
                        org.springframework.web.context.ContextLoaderListener{
     Scheduler scheduler;

    @Override
     public void contextInitialized(javax.servlet.ServletContextEvent event) {
             try{
             super.contextInitialized(event);
             this.scheduler= WebApplicationContextUtils.getWebApplicationContext(event.getServletContext()).getBean(Scheduler.class);

    }

    @Override
    public void contextDestroyed(ServletContextEvent event){

          super.contextDestroyed(event);
          scheduler.stopSchedulers();


    }
票数 0
EN

Stack Overflow用户

发布于 2011-12-20 23:20:09

您为什么不尝试使用init-method或尝试实现初始化bean。这些为postConstruct提供了替代方法。

当spring bean被卸载时,即当容器关闭时,或者ConfigurableApplicationContext方法中的close()方法通过其他方式被调用时,preDestroy就会被调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8576968

复制
相关文章

相似问题

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