Java項目啟動時執行指定方法的幾種方式


很多時候我們都會碰到需要在程序啟動時去執行的方法,比如說去讀取某個配置,預加載緩存,定時任務的初始化等。這里給出幾種解決方案供大家參考。

1. 使用@PostConstruct注解

這個注解呢,可以在Spring加載這個類的時候執行一次。來看一下下方代碼。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Component
public class Test {

public Test(){
System.out.println("我最先執行");
}

/**
*我第二個執行
*/
@Autowired
private T t;

/**
*我第三個個執行
*/
@PostConstruct
private void init(){
//假裝有代碼
}
}

上方就是@PostConstruct注解的使用方法了,同時也表示了此類被加載時的執行順序。

2. CommandLineRunner接口

使用CommandLineRunner接口類似於Main方法啟動,可以接受一個字符串數組的命令行參數,來看一下實現

1
2
3
4
5
6
7
8
@Component
public class MyCommandLineRunner implements CommandLineRunner{

@Override
public void run(String... args) throws Exception{
//假裝有代碼
}
}

3. ApplicationRunner 接口

此種方式與實現CommandLineRunner接口的區別就是他的參數是ApplicationArguments

1
2
3
4
5
6
7
8
9
10

@Order(value = 1)
@Component
public class MyApplicationRunner implements ApplicationRunner{

@Override
public void run(ApplicationArguments args) throws Exception{
//假裝有代碼
}
}

我們可以看到,此類相比較於第二種方式還增加一個@Order注解,這個注解其實第二種方式也是能加的。

它的作用就是控制類的加載順序,這個順序是從小到大的。比如說啟動時先去加載Order的value等於1的類,然后去加載等於2的類。

 

 

本文出自http://zhixiang.org.cn,轉載請保留。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM