本文分类:
Spring

实现 ApplicationListener 接口即可,这里要注意的是,多个 Listener 在同一个线程中执行,如果某个 Listener 抛异常,则 Spring 启动失败,不会执行后面的 Listener。如果某个 Listener 的 onApplicationEvent 中的操作是阻塞,则 Spring 启动挂起,对于可能阻塞的情况,可以在 onApplicationEvent 新起一个线程来执行操作。

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

@Component
public class DemoListener implements ApplicationListener<ContextRefreshedEvent> {
    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        // do Something
    }
}

Spring Cloud Config 环境下,存在多个有层级的 ContextRefreshedEvent,会导致 ApplicationListener<ContextRefreshedEvent> 执行多次,要添加状态变量控制执行次数。

本文来自 [时光记 - 王智超的个人空间](www.hiwzc.com),转载请注明出处。