1 Spring Boot 中的启动时加载数据
若我们在 Spring Boot 刚启动时做点事情(加载数据),可以通过实现接口 CommandLineRunner 来完成。
示例
我们直接创建一个类来实现 CommandLineRunner 接口
@Component
public class Runner01 implements CommandLineRunner{
@Override
public void run(String... args) throws Exception {
System.out.println("Spring Boot 启动,正在加载数据 01");
}
}
运行,可得如下结果
实际上 Spring Boot 在启动后,会找到全部 CommandLineRunner 接口的实例并运行它们的 run 方法。
CommandLineRunner 的执行顺序
我们可以通过 @Order 注解或者实现 Order 接口来指定 CommandLineRunner 的执行顺序。
下面我们使用 @Order 注解进行模拟
@Component
@Order(value=2)
public class Runner02 implements CommandLineRunner{
@Override
public void run(String... args) throws Exception {
System.out.println("Spring Boot 启动,正在加载数据 02");
}
}
@Component
@Order(value=1)
public class Runner03 implements CommandLineRunner{
@Override
public void run(String... args) throws Exception {
System.out.println("Spring Boot 启动,正在加载数据 03");
}
}
结果如下
2 Spring Boot 的热启动
热启动,即修改代码保存时会自动重新启动项目。
Spring Boot 中的热启动实现需要添加以下配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
注意,该模块在完整的打包环境下运行的时候会被禁用。