Spring-boot 启动完成时执行指定任务

旧城等待, 2022-03-30 15:30 441阅读 0赞

在服务启动完成时,如果需要执行一些特定的预加载任务,则可以通过实现 CommandLineRunner 接口来实现。

实现

  1. @Component
  2. public class Started implements CommandLineRunner{
  3. private static final Logger LOGGER = LoggerFactory.getLogger(Started.class);
  4. @Override
  5. public void run(String... strings) throws Exception {
  6. LOGGER.info("App Starting ... ");
  7. LOGGER.info("------------------------------------------------------------------------------");
  8. LOGGER.info("| | |");
  9. LOGGER.info("| --====|====-- |");
  10. LOGGER.info("| | |");
  11. LOGGER.info("| |");
  12. LOGGER.info("| .-'''''-. |");
  13. LOGGER.info("| .'_________'. |");
  14. LOGGER.info("| /_/_|__|__|_\\_\\ |");
  15. LOGGER.info("| ;'-._ _.-'; |");
  16. LOGGER.info("| ,--------------------| `-. .-' |--------------------, |");
  17. LOGGER.info("| ``''--..__ ___ ; ' ; ___ __..--''`` |");
  18. LOGGER.info("| `'-// \\\\.._\\ /_..// \\\\-'` |");
  19. LOGGER.info("| \\\\_// '._ _.' \\\\_// |");
  20. LOGGER.info("| `-` ``---`` `-` |");
  21. LOGGER.info("------------------------------------------------------------------------------");
  22. }
  23. }

效果:

731716-20171015143054809-257735279.png

如上,在应用中,可以通过加入明显日志的形式,提示是否发布成功。

可以看到,其输出在 StartupInfoLogger 之前。

优先级

如果存在多个 CommandLineRunner 实现类时,可以通过 @Order 来规定它们的加载顺序,如下所示:

  1. @Component
  2. @Order(1)
  3. public class Started implements CommandLineRunner{
  4. ...
  5. }

其中注解的 value 指运行的优先级,越小则越优先。

参考资料

[1] Spring Boot 启动加载数据 CommandLineRunner

发表评论

表情:
评论列表 (有 0 条评论,441人围观)

还没有评论,来说两句吧...

相关阅读