SpringBoot中實(shí)現(xiàn)啟動(dòng)任務(wù)的實(shí)現(xiàn)步驟
我們?cè)陧?xiàng)目中會(huì)用到項(xiàng)目啟動(dòng)任務(wù),即項(xiàng)目在啟動(dòng)的時(shí)候需要做的一些事,例如:數(shù)據(jù)初始化、獲取第三方數(shù)據(jù)等等,那么如何在SpringBoot 中實(shí)現(xiàn)啟動(dòng)任務(wù),一起來看看吧
SpringBoot 中提供了兩種項(xiàng)目啟動(dòng)方案,CommandLineRunner 和 ApplicationRunner
一、CommandLineRunner
使用 CommandLineRunner ,需要自定義一個(gè)類區(qū)實(shí)現(xiàn) CommandLineRunner 接口,例如:
import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; /** * 項(xiàng)目啟動(dòng)任務(wù)類 */ @Component @Order(100) public class StartTask implements CommandLineRunner { @Override public void run(String... args) throws Exception { } }
我們首先使用 @Component 將該類注冊(cè)成為 Spring 容器中的一個(gè) Bean
然后使用 @Order(100) 標(biāo)明該啟動(dòng)任務(wù)的優(yōu)先級(jí),值越大,表示優(yōu)先級(jí)越小
實(shí)現(xiàn) CommandLineRunner 接口,并重寫 run() 方法,當(dāng)項(xiàng)目啟動(dòng)時(shí),run() 方法會(huì)被執(zhí)行,run() 方法中的參數(shù)有兩種傳遞方式
1、在 IDEA 中傳入?yún)?shù)
2、將項(xiàng)目打包,在啟動(dòng)項(xiàng)目時(shí),輸入以下命令:
java -jar demo-0.0.1-SNAPSHOT.jar hello world
二、ApplicationRunner
ApplicationRunner 與 CommandLineRunner 的用法基本一致,只是接收的參數(shù)不一樣,可以接收 key-value 形式的參數(shù),如下:
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; /** * 項(xiàng)目啟動(dòng)任務(wù)類 */ @Component @Order(100) public class StartTask implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { } }
關(guān)于 run 方法的參數(shù) ApplicationArguments:
1、args.getNonOptionArgs();可以用來獲取命令行中的無key參數(shù)(和CommandLineRunner一樣)
2、args.getOptionNames();可以用來獲取所有key/value形式的參數(shù)的key
3、args.getOptionValues(key));可以根據(jù)key獲取key/value 形式的參數(shù)的value
4、args.getSourceArgs(); 則表示獲取命令行中的所有參數(shù)
傳參方式:
1、在 IDEA 中傳入?yún)?shù)
2、將項(xiàng)目打包,在啟動(dòng)項(xiàng)目時(shí),輸入以下命令:
java -jar demo-0.0.1-SNAPSHOT.jar hello world --name=xiaoming
以上就是在 SpringBoot 中實(shí)現(xiàn)項(xiàng)目啟動(dòng)任務(wù)的兩種方式,用法基本一致,主要體現(xiàn)在傳參的不同上
到此這篇關(guān)于SpringBoot中實(shí)現(xiàn)啟動(dòng)任務(wù)的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)SpringBoot 啟動(dòng)任務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot集成EasyExcel實(shí)現(xiàn)Excel導(dǎo)入的方法
這篇文章主要介紹了SpringBoot集成EasyExcel實(shí)現(xiàn)Excel導(dǎo)入的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Java實(shí)現(xiàn)簡單的socket通信教程
這篇文章主要介紹了Java實(shí)現(xiàn)簡單的socket通信教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12如何使用IDEA開發(fā)Spark SQL程序(一文搞懂)
Spark SQL 是一個(gè)用來處理結(jié)構(gòu)化數(shù)據(jù)的spark組件。它提供了一個(gè)叫做DataFrames的可編程抽象數(shù)據(jù)模型,并且可被視為一個(gè)分布式的SQL查詢引擎。這篇文章主要介紹了如何使用IDEA開發(fā)Spark SQL程序(一文搞懂),需要的朋友可以參考下2021-08-08使用IDEA直接連接MySQL數(shù)據(jù)庫的方法
這篇文章主要介紹了如何使用IDEA直接連接MySQL數(shù)據(jù)庫,首先需要新建一個(gè)空項(xiàng)目,第一次連接 需要先下載驅(qū)動(dòng),文中給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04java實(shí)現(xiàn)發(fā)送郵件的示例代碼
這篇文章主要介紹了java如何實(shí)現(xiàn)發(fā)送郵件,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07解決idea導(dǎo)入ssm項(xiàng)目啟動(dòng)tomcat報(bào)錯(cuò)404的問題
今天小編就為大家分享一篇解決idea導(dǎo)入ssm項(xiàng)目啟動(dòng)tomcat報(bào)錯(cuò)404的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08詳解SpringMVC重定向傳參數(shù)的實(shí)現(xiàn)
本篇文章主要介紹了詳解SpringMVC重定向傳參數(shù)的實(shí)現(xiàn),我們可以使用重定向的方式,改變?yōu)g覽器的地址欄,防止表單因?yàn)樗⑿轮貜?fù)提交。有興趣的可以了解一下。2017-01-01spring boot入門開始你的第一個(gè)應(yīng)用
這篇文章主要介紹了spring boot入門開始你的第一個(gè)應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06