Java项目启动时执行指定方法的几种方式

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

 

posted @ 2020-04-06 18:37  曾饺  阅读(5415)  评论(0编辑  收藏  举报