Spring Boot 启动时执行
注意:前提是都得注入到容器中。
static代码块
static静态代码块,在类加载的时候自动执行。
构造方法
在对象初始化时执行。执行顺序在static静态代码块之后。
@PostConstruct注解
PostConstruct注解使用在方法上,这个方法在对象依赖注入初始化之后执行。
ApplicationRunner接口
实现该接口并重写run(ApplicationArguments args)
方法。当存在多个实现类时,通过@Order注解进行排序,例如@Order(1)、@Order(2)...
CommandLineRunner接口
实现该接口并重写run(String... args)
方法。当存在多个实现类时,通过@Order注解进行排序,例如@Order(1)、@Order(2)...
测试
@Component
public class Hello {
static {
System.out.println("static - 静态代码块");
}
public Hello() {
System.out.println("构造方法");
}
@PostConstruct
public void init() {
System.out.println("@PostConstruct注解");
}
}
@Component
@Order(1)
public class Hi1 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("@Order(1)--实现ApplicationRunner接口");
}
}
@Component
@Order(2)
public class Hi2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("@Order(2)--实现CommandLineRunner接口");
}
}
启动Spring Boot后控制台打印顺序如下:
static - 静态代码块
构造方法
@PostConstruct注解
@Order(1)--实现ApplicationRunner接口
@Order(2)--实现CommandLineRunner接口