1.使用 @PostConstruct,作用于方法上面:类加载后执行,不依赖于项目的启动,经常可以看到项目未启动成功该方法就已经执行了
@Component
public class PostConstruct {
@PostConstruct
public void test() {
System.out.println("PostConstruct:开始运行...");
}
}
2.使用 CommandLineRunner 接口:在服务启动后执行
@Component
public class Start implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("CommandLineRunner:开始运行...");
}
}
3.使用 ApplicationRunner 接口
@Component
public class Start1 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("ApplicationRunner:开始运行...");
}
}
以上三种方式都是在项目启动的时候加载指定的方法,第一种使用的是 注解的方式,第二种、第三种使用的是实现接口的方式。
它们的执行顺讯为 @PostConstruct---》ApplicationRunner---》CommandLineRunner。
CommandLineRunner 和ApplicationRunner 的作用都是用于项目启动后进行数据的初始化。如有多个Runner的话,可以使用 @Order(value = 1)指定运行的顺序。 数字越小越早运行。
@PostConstruct:在Spring实例化该Bean之后马上执行此方法,之后才会去实例化其他Bean