ConfigurationProperties
SpringBoot 的一个很重要的功能是外部化配置,可以直接访问配置文件(application.yml)中定义的字段值,并能够完成属性绑定。
但是,需要注意:@ConfigurationProperties 并没有把当前类注册成为一个 Spring 的 Bean。所以,我们在使用时都会配合 @Component 注解直接进行注入。例如:
注意到,ConfigurationProperties 的 prefix 属性指定了 adconf.mysql。所以,它会映射到 application.yml 中对应的字段。例如:
CommandLineRunner 与 ApplicationRunner
CommandLineRunner 与 ApplicationRunner 接口是在 Spring 容器启动之后做的一些自定义操作。
- CommandLineRunner
接口被用作将其加入 Spring 容器中时执行其 run 方法。多个 CommandLineRunner 可以被同时执行在同一个 Spring 上下文中并且执行顺序是以 Order 注解的参数顺序一致。注意:需要把 CommandLineRunner 加入到 Spring 容器中。例如:
- ApplicationRunner
阅读官方的 javadoc,可以发现,与 CommandLineRunner 几乎一样,区别在于接收的参数不一样。CommandLineRunner 的参数是最原始的参数,没有做任何处理。ApplicationRunner 的参数是 ApplicationArguments,是对原始参数做了进一步的封装。使用方法也是一样的,例如:
-
@Scheduled
@Scheduled 注解用于计划执行,它提供了多种参数控制执行的时间和频率等。例如:fixedRate 以固定的频率执行、cron 以 crontab 表达式的规则执行等等。
@Scheduled 任务是非常常用的,使用起来也非常简单:1. 加载到 Spring 容器中;2. 指定你想要的执行规则。例如:
@Componen
public class ScheduledTask {
//@Scheduled(fixedRate = 5000) 上一次开始执行时间点之后5秒再执行
// @Scheduled(fixedDelay = 5000) 上一次执行完毕时间点之后5秒再执行
// @Scheduled(cron = "*/5 * * * * *") 通过 crontab 表达式定义规则
@Scheduled(fixedRate =1000)
public void helloSpringBoot ( ) {
System.out.println("Hello SpringBoot");
}
}