首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring SmartLifeCycle似乎不支持post构造

Spring SmartLifeCycle似乎不支持post构造
EN

Stack Overflow用户
提问于 2016-11-02 02:45:56
回答 1查看 1.2K关注 0票数 0

我使用Spring指定SmartLifeCycle顺序,如下所示:

代码语言:javascript
复制
public class MyBean implements SmartLifecycle {
    @PostConstruct
    public void init() {
        //Do stuff
    }

private boolean isRunning = false;

    @Override
    public boolean isAutoStartup() {
        LOGGER.warn("************** is autostartp");
        return true;
    }

    @Override
    public void stop(final Runnable callback) {
        stop();
        callback.run();
    }

    @Override
    public void start() {
        LOGGER.warn("************** start ");
        isRunning = true;
    }

    @Override
    public void stop() {
        LOGGER.warn("************** stop");
        isRunning = false;
    }

    @Override
    public boolean isRunning() {
        LOGGER.warn("************** is running" + isRunning);
        return isRunning;
    }

    @Override
    public int getPhase() {
        LOGGER.warn("************** phase " + (Integer.MIN_VALUE));
        return Integer.MIN_VALUE;
    }
}

订单似乎运行不正确。所有的bean似乎都是在考虑阶段之前就构建好的,这导致应用程序无法启动。

我如何解决这个问题并正确地指定顺序?我是不是用错了?

EN

回答 1

Stack Overflow用户

发布于 2017-01-04 06:54:36

看起来您缺少getPhase()方法。这用于控制bean实例化的顺序。在关闭过程中,顺序颠倒。

任何没有显式阶段的bean要么被分配到阶段0(最常见),要么被Spring赋予一个阶段(如果它是由Spring管理的东西,比如JMS侦听器)。

除非您显式地指定一个阶段,否则Spring将做出“最佳猜测”,这可能不会产生所需的结果。

代码语言:javascript
复制
@Override
public int getPhase() {
    return 1;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40366601

复制
相关文章

相似问题

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