前言
对于ApplicationReadyEvent,官网的解释是:事件尽可能晚发布,以指示应用程序已准备好为请求提供服务。该事件的来源是SpringApplication本身,但要注意修改其内部状态,因为届时所有初始化步骤都将完成。顾名思义就是SpringApplication准备就绪之后的事件,我们可以把一些有可能出现类未初始化异常的操作放在这里面执行
使用
@Component
public class BackendReadyEventListener implements ApplicationListener<ApplicationReadyEvent> {
private static final Logger LOGGER = LoggerFactory.getLogger(BackendReadyEventListener.class);
@Value("${thread.pool.coreSize:5}")
private int corePoolSize;
@Value("${thread.pool.maxSize:50}")
private int maxPoolSize;
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
//配置文件数据库缓存初始化
ConfigHelper configHelper = SpringContextUtils.getBean(ConfigHelper.class);
configHelper.initDatabaseCache();
//初始化线程池
new PoolExecutor(corePoolSize, maxPoolSize, new ThreadPoolExecutor.AbortPolicy());
}
}
比如,我在上述代码里面执行了配置文件数据库缓存初始化和初始化线程池等操作