SpringBoot中CommandLineRunner?
點擊上方藍色字體,選擇“標(biāo)星公眾號”
優(yōu)質(zhì)文章,第一時間送達
SpringBoot中CommandLineRunner的作用
平常開發(fā)中有可能需要實現(xiàn)在項目啟動后執(zhí)行的功能,SpringBoot提供的一種簡單的實現(xiàn)方案就是添加一個model并實現(xiàn)CommandLineRunner接口,實現(xiàn)功能的代碼放在實現(xiàn)的run方法中
也就是項目一啟動之后,就立即需要執(zhí)行的動作
我們只需要在項目里面簡單的配置,就可以實現(xiàn)這個功能。
簡單例子
package?org.springboot.sample.runner;
import?org.springframework.boot.CommandLineRunner;
import?org.springframework.stereotype.Component;
@Component
public?class?MyStartupRunner?implements?CommandLineRunner?{
@Override
public?void?run(String...?args)?throws?Exception?{
System.out.println("項目已經(jīng)啟動");
}
}
如果有多個類實現(xiàn)CommandLineRunner接口,如何保證順序
SpringBoot在項目啟動后會遍歷所有實現(xiàn)CommandLineRunner的實體類并執(zhí)行run方法,如果需要按照一定的順序去執(zhí)行,那么就需要在實體類上使用一個@Order注解(或者實現(xiàn)Order接口)來表明順序
package?org.springboot.sample.runner;
import?org.springframework.boot.CommandLineRunner;
import?org.springframework.core.annotation.Order;
import?org.springframework.stereotype.Component;
@Component
@Order(value=2)
public?class?MyStartupRunner1?implements?CommandLineRunner?{
@Override
public?void?run(String...?args)?throws?Exception?{
System.out.println("執(zhí)行2");
}
}
package?org.springboot.sample.runner;
import?org.springframework.boot.CommandLineRunner;
import?org.springframework.core.annotation.Order;
import?org.springframework.stereotype.Component;
@Component
@Order(value=1)
public?class?MyStartupRunner2?implements?CommandLineRunner?{
@Override
public?void?run(String...?args)?throws?Exception?{
System.out.println("執(zhí)行1");
}
}
控制臺顯示
執(zhí)行1
執(zhí)行2
根據(jù)控制臺結(jié)果可判斷,@Order 注解的執(zhí)行優(yōu)先級是按value值從小到大順序。
@Order 作用
就是項目啟動之后,要執(zhí)行的動作是比較的多,那么到底先執(zhí)行哪個,那么就可以利用這個注解限定優(yōu)先級。
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。
本文鏈接:
https://blog.csdn.net/python113/article/details/109244712
粉絲福利:108本java從入門到大神精選電子書領(lǐng)取
???
?長按上方鋒哥微信二維碼?2 秒 備注「1234」即可獲取資料
感謝點贊支持下哈?
評論
圖片
表情
