我能确保我的一个 Spring 应用程序列表管理器最后执行吗?

我有几个服务正在侦听Spring事件,以对我的基础数据模型进行更改。这些都通过实现.一旦所有侦听器都修改了基础数据模型,我的用户界面就需要刷新以反映更改(想想)。ApplicationListener<Foo>FoofireTableDataChanged()

有没有办法确保特定的监听器始终是最后一个?或者有没有办法在所有其他侦听器完成后调用函数?我正在使用基于注释的连接和Java配置,如果这很重要的话。Foo


答案 1

所有实现的 bean 也应该实现有序的,并提供合理的订单价值。该值越低,侦听器的调用速度就越快:ApplicationListener

class FirstListener implements ApplicationListener<Foo>, Ordered {
    public int getOrder() {
        return 10;
    }
    //...
}

class SecondListener implements ApplicationListener<Foo>, Ordered {
    public int getOrder() {
        return 20;
    }
    //...
}

class LastListener implements ApplicationListener<Foo>, Ordered {
    public int getOrder() {
        return LOWEST_PRECEDENCE;
    }
    //...
}

此外,您可以实现PriorityOrdered,以确保始终首先调用其中一个侦听器。


答案 2

推荐