1.環(huán)境
目前開發(fā)的項目使用的spring boot(2.1.4.RELEASE)+ssm
2. 需求
現(xiàn)在有一個數(shù)據(jù)處理任務(wù)的接口,在spring boot項目啟動后,可以手動的去啟動任務(wù),但是這樣比較麻煩,每次項目重新運行都要去通過swagger調(diào)用數(shù)據(jù)處理的接口.所以 現(xiàn)在想在項目啟動后就是調(diào)用該方法
3. 解決思路
當然spring給我們提供了方法:在SpringBoot中,有兩種接口方式實現(xiàn)啟動執(zhí)行,分別是ApplicationRunner和CommandLineRunner,除了可接受參數(shù)不同,其他的基本一樣.網(wǎng)上有很多例子.就不多說了,作者選用的是實現(xiàn)CommandLineRunner接口,重寫了run 方法.
4. 例子
- controller

這里我自定義一個Person類,并且定義了一個person.properties配置文件,讀取其中的值,配置如下:
- person

- person.properties

注意:這里涉及到幾個注解:

大家有問題可以學(xué)習下
- 自定義類實現(xiàn)CommandLineRunner

5. 問題
這時候以為可以完美解決,但是出現(xiàn)了錯誤:

竟然出現(xiàn)了空指針異常
6. 解決思路
我再run方法中new 了一個controller 層中的類:
HelloController helloController = new HelloController();
而這個類依賴其他類并且使用了@Autowired注入的Spring Bean.那這就不奇怪了,那這個錯誤空指針就不為過了,因為使用的是new而不是spring幫我們自動注入的,那肯定會出現(xiàn)這個錯誤,因此查看了Springboot中new出來的實例和@Autowired注入的區(qū)別:那肯定要換成@Autowired注解的方式,交給spring容器去管理.
其實從這個錯誤中更加認識到什么是spring容器了.
7. 解決方案

問題解決,項目啟動時調(diào)用了getValue方法.沒有出現(xiàn)空指針異常.