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

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

- person.properties

注意:這里涉及到幾個(gè)注解:

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

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

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

問(wèn)題解決,項(xiàng)目啟動(dòng)時(shí)調(diào)用了getValue方法.沒(méi)有出現(xiàn)空指針異常.