项目启动时socket自动启动_spring boot 项目在启动时调用接口
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接口,重寫了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)空指針異常.
總結(jié)
以上是生活随笔為你收集整理的项目启动时socket自动启动_spring boot 项目在启动时调用接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql pdo 获取最后一条sql_
- 下一篇: mysql维护索引_高性能的MySQL(