1. 程式人生 > >Java專案啟動時執行指定方法的幾種方式

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,轉載請保留。