Spring boot CommandLineRunner接口使用例子
前言
Spring boot的CommandLineRunner
接口主要用于实现在应用初始化后,去执行一段代码块逻辑,这段初始化代码在整个应用生命周期内只会执行一次。
如何使用CommandLineRunner接口
我们可以用以下三种方式去使用CommandLineRunner
接口:
1)和@Component注解一起使用
这种使用方式相当简便,如下所示:
@Component
public class ApplicationStartupRunner implements CommandLineRunner {protected final Log logger = LogFactory.getLog(getClass());@Overridepublic void run(String... args) throws Exception {logger.info("ApplicationStartupRunner run method Started !!");}
}
2)和@SpringBootApplication注解一起使用
这种使用方式也相当的简单,参考代码如下:
@SpringBootApplication
public class SpringBootWebApplication extends SpringBootServletInitializer implements CommandLineRunner {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(SpringBootWebApplication.class);}public static void main(String[] args) throws Exception {SpringApplication.run(SpringBootWebApplication.class, args);}@Overridepublic void run(String... args) throws Exception {logger.info("Application Started !!");}
}
3)声明一个实现了CommandLineRunner接口的Bean
这种方式其实也大同小异,就是在SpringBootApplication
里定义一个Bean,改Bean实现了CommandLineRunner
接口,参考代码如下:
ApplicationStartupRunner.java
public class ApplicationStartupRunner implements CommandLineRunner {protected final Log logger = LogFactory.getLog(getClass());@Overridepublic void run(String... args) throws Exception {logger.info("Application Started !!");}
}
注册ApplicationStartupRunner bean
@SpringBootApplication
public class SpringBootWebApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(SpringBootWebApplication.class);}public static void main(String[] args) throws Exception {SpringApplication.run(SpringBootWebApplication.class, args);}@Beanpublic ApplicationStartupRunner schedulerRunner() {return new ApplicationStartupRunner();}
}
注意:在实现
CommandLineRunner
接口时,run(String… args)
方法内部如果抛异常的话,会直接导致应用启动失败,所以,一定要记得将危险的代码放在try-catch
代码块里。
用@Order注解去设置多个CommandLineRunner实现类的执行顺序
一个应用可能存在多个CommandLineRunner
接口实现类,如果我们想设置它们的执行顺序,可以使用 @Order
实现
@Order(value=3)
@Component
class ApplicationStartupRunnerOne implements CommandLineRunner {protected final Log logger = LogFactory.getLog(getClass());@Overridepublic void run(String... args) throws Exception {logger.info("ApplicationStartupRunnerOne run method Started !!");}
}@Order(value=2)
@Component
class ApplicationStartupRunnerTwo implements CommandLineRunner {protected final Log logger = LogFactory.getLog(getClass());@Overridepublic void run(String... args) throws Exception {logger.info("ApplicationStartupRunnerTwo run method Started !!");}
}
输出日志:
2017-03-08 13:55:04 - ApplicationStartupRunnerTwo run method Started !!
2017-03-08 13:55:04 - ApplicationStartupRunnerOne run method Started !!
为什么要使用CommandLineRunner接口
- 实现在应用启动后,去执行相关代码逻辑,且只会执行一次;
- spring batch批量处理框架依赖这些执行器去触发执行任务;
我们可以在run()方法里使用任何依赖,因为它们已经初始化好了;
原文文链
Site4J
Spring boot CommandLineRunner接口使用例子相关推荐
- spring boot rest接口自动生成文档(包含swagger)
spring boot rest接口自动生成文档(包含swagger) 写接口免不了写接口文档,但是当文档与代码分开独立演进的时候,会发生很多不同步的问题. 接口描述与代码同 ...
- spring boot开发接口api
spring boot开发接口api 在上一次教了大家怎么去搭建一个自己的后端模板之后,现在和大家分享讨论一下如何开发RestfulApi接口. 首先开发api之前要考虑到后端是需要写api文档的 ...
- spring boot rest接口自动生成文档(包含swagger)--gradle 下的配置
之前写过一篇文章:spring boot rest接口自动生成文档(包含swagger),这个使用的是maven作为依赖管理工具,现在,让我们体验一下gradle在spring boot项目中如何配置 ...
- Spring Boot API 接口文档 Swagger 入门
转载自 芋道 Spring Boot API 接口文档 Swagger 入门 摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Swagger/ 「芋道源码」欢迎转 ...
- spring boot 文件下载接口
文章目录 spring boot 文件下载接口 通过ResponseEntity实现 通过写HttpServletResponse的OutputStream实现 spring boot 文件下载接口 ...
- 什么?Spring Boot CommandLineRunner 有坑!?
作者 | 狮子头儿 来源 | https://blog.csdn.net/zwq_zwq_zwq/article/details/81059017 使用场景 在应用程序开发过程中,往往我们需要在容器启 ...
- Spring Boot CommandLineRunner和ApplicationRunner
在本快速教程中,我们将探索Spring Boot中两个非常流行的界面: CommandLineRunner和ApplicationRunner . 这些接口的一种常见用例是在应用程序启动时加载一些静态 ...
- Spring Boot 定义接口的方法是否可以声明为 private?
我们在 Controller 中定义接口的时候,一般都是像下面这样: @GetMapping("/01") public String hello(Map<String,Ob ...
- Spring Boot 实现接口幂等性的 4 种方案!还有谁不会?
点击关注公众号,Java干货及时送达 作者:超级小豆丁 链接:mydlq.club/article/94 一.什么是幂等性 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两 ...
- Spring Boot 实现接口幂等性的 4 种方案作者:小小怪下士
一.什么是幂等性 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同.在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行 ...
最新文章
- 键盘历史记录实用程序已停止工作 解决办法
- Java开发者写SQL时常犯的10个错误
- 大数据分析工资单:六大行员工再涨薪 人均年薪超26万
- 99%的数据中心都会面临的痛点,现在终于有好的解决方案了!
- C#程序将DLL包进EXE方法
- 隐藏马尔科夫模型HMM
- 穷小子做网站赚钱终得丈母娘认可
- 对抗模拟浏览器的DDoS攻击
- 洛谷——P1059 [NOIP2006 普及组] 明明的随机数
- [bzoj1468][poj1741]Tree_点分治
- attention的前世今生
- 【元胞自动机】基于元胞自动机模拟生命演化、病毒感染等实例附matlab代码
- QT QML 3D模型查看器
- mysql Incorrect string value \xF0\x9F\x98\x84\xF0\x9F
- 直接激光雷达里程计:基于稠密点云的快速定位
- Windows 11 修改桌面文件路径
- vs2019开发android应用,VS 2019开发APP(一)界面和代码
- 软技能入门《质量》系列 -- 密切追踪
- 基于ESP8266的智能家庭检测系统
- Spring Cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)