统一服务初始化操作提升系统启动效率的秘诀
背景
在我们开发的时候,会经常有一些服务启动后初始化的一些操作,就比如从从阻塞队列中取出任务执行或者加载字典信息的
一般都是实现 CommandLineRunner 接口或者在方法上添加 @PostConstruct 注解这些方案,其实还有另外几种,别着急,我都会挨个介绍的。但要是这些初始化的操作变得越来越多,彼此之间还要求执行顺序,如果不统一进行管理的话,就会越来越混乱,左一个,右一个,当出现问题排除出来就会难上加难。本人就因为这个问题踩过很多的坑!所以本文要介绍的就是如何将这几种初始化操作进行集中的管理
示例
在我们介绍统一管理组件之前,我们先来回忆下这几种初始化的操作是怎么使用的
CommandLineRunner
@Component
public class TestCommandLineRunner implements CommandLineRunner {
@Override
public void run(final String... args) {
System.out.println("======run执行======");
}
}
InitializingBean
@Component
public class TestInitializingBean implements InitializingBean {
@Override
public void afterPropertiesSet() {
System.out.println("======afterPropertiesSet执行======");
}
}
PostConstruct
@Component
public class TestPostConstruct {
@PostConstruct
public void postConstruct(){
System.out.println("======postConstruct执行======");
}
}
ApplicationListener
@Component
public class TestEventListener implements ApplicationListener<ApplicationStartedEvent> {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
System.out.println("======ApplicationStartedEvent执行======");
}
}
结果
======afterPropertiesSet执行======
======postConstruct执行======
======ApplicationStartedEvent执行======
======run执行======
可以看到这四种都是在服务启动后会执行,执行顺序是afterPropertiesSet > postConstruct > ApplicationStartedEvent > run
讲解
经过上面的铺垫,接下来我们详细的介绍大麦项目中是如何将这些详细操作进行集中式管理的
付费内容提示
该文档的全部内容仅对「JavaUp项目实战&技术讲解」知识星球用户开放
加入星球后,你可以获得:
- 超级八股文:100万+字的全栈技术知识库,涵盖技术核心、数据库、中间件、分布式等深度剖析的讲解
- 讲解文档:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的从0到1的550+详细文档
- 讲解视频:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的核心业务详细讲解
- 1 对 1 解答:可以对我进行1对1的问题提问,而不仅仅只限于项目
- 针对性服务:有没理解的地方,文档或者视频还没有讲到可以提出,本人会补充
- 面试与简历指导:提供面试回答技巧,项目怎样写才能在简历中具有独特的亮点
- 中间件环境:对于项目中需要使用的中间件,可直接替换成我提供的云环境
- 面试后复盘:小伙伴去面试后,如果哪里被面试官问住了,可以再找我解答
- 远程的解决:如果在启动项目遇到问题,本人可以帮你远程解决
进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。
