Spring Boot之CommandLineRunner和ApplicationRunner
程序员文章站
2022-03-02 17:32:07
...
1.使用场景
我们在开发过程中会有这样的场景:需要在容器启动的时候执行一些内容,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,在Spring框架下是通过ApplicationListener监听器来实现的。在Spring Boot中给我们提供了两个接口来帮助我们实现这样的需求。这两个接口就是我们今天要讲的CommandLineRunner和ApplicationRunner,他们的执行时机为容器启动完成的时候。
2.使用(可以在项目的configuration的program arguments配置参数)
CommandLineRunner
@Order(1)
@Component
public class ServerStartedReport implements CommandLineRunner{
@Override
public void run(String... args) throws Exception {
System.out.println("===========ServerStartedReport启动====="+ LocalDateTime.now());
}
}
@SpringBootApplication
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext context =SpringApplication.run(Application.class,args);
ApplicationArguments applicationArguments = context.getBean(ApplicationArguments.class);
System.out.println("============");
System.out.println("name="+applicationArguments.getOptionNames());
System.out.println("values===="+applicationArguments.getOptionValues("developer.name"));
}
}
ApplicationRunner
@Component
public class MyApplicationRunner implements ApplicationRunner{
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("===MyApplicationRunner==="+ Arrays.asList(args.getSourceArgs()));
System.out.println("===getOptionNames========"+args.getOptionNames());
System.out.println("===getOptionValues======="+args.getOptionValues("foo"));
System.out.println("==getOptionValues========"+args.getOptionValues("developer.name"));
}
}
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
推荐阅读
-
spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制
-
Spring Boot实战之模板引擎
-
Spring Boot整合mybatis并自动生成mapper和实体实例解析
-
Spring Boot + Mybatis多数据源和动态数据源配置方法
-
Spring boot 和Vue开发中CORS跨域问题解决
-
spring boot 使用Aop通知打印控制器请求报文和返回报文问题
-
spring-boot读取props和yml配置文件的方法
-
详解Spring Boot实战之Rest接口开发及数据库基本操作
-
Spring学习之动态代理(JDK动态代理和CGLIB动态代理)
-
简单理解Spring之IOC和AOP及代码示例