Spring Boot 啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的幾種方式,還有誰不會(huì)??
往期熱門文章:
4、讓人上癮的新一代開發(fā)神器,徹底告別Controller、Service、Dao等方法
來源:blog.csdn.net/u011291072/article/details/81813662
前言
java自身的啟動(dòng)時(shí)加載方式
Spring啟動(dòng)時(shí)加載方式
代碼測(cè)試
總結(jié)
前言
@PostConstruct注解實(shí)現(xiàn)。ApplicationRunner與CommandLineRunner接口去實(shí)現(xiàn)啟動(dòng)后運(yùn)行的功能。在這里整理一下,在這些位置執(zhí)行的區(qū)別以及加載順序。java自身的啟動(dòng)時(shí)加載方式
static代碼塊
構(gòu)造方法
Spring啟動(dòng)時(shí)加載方式
@PostConstruct注解
ApplicationRunner和CommandLineRunner
CommandLineRunner和ApplicationRunner。ApplicationRunner的run方法入?yún)?/span>ApplicationArguments,為CommandLineRunner的run方法入?yún)镾tring數(shù)組。何為ApplicationArguments
Provides access to the arguments that were used to run a SpringApplication.
SpringApplication.run(…)的應(yīng)用參數(shù)。Order注解
CommandLineRunner和ApplicationRunner接口時(shí),可以通過在類上添加@Order注解來設(shè)定運(yùn)行順序。代碼測(cè)試
@Component
public?class?TestPostConstruct?{
????static?{
????????System.out.println("static");
????}
????public?TestPostConstruct()?{
????????System.out.println("constructer");
????}
????@PostConstruct
????public?void?init()?{
????????System.out.println("PostConstruct");
????}
}
@Component
@Order(1)
public?class?TestApplicationRunner?implements?ApplicationRunner{
????@Override
????public?void?run(ApplicationArguments?applicationArguments)?throws?Exception?{
????????System.out.println("order1:TestApplicationRunner");
????}
}
@Component
@Order(2)
public?class?TestCommandLineRunner?implements?CommandLineRunner?{
????@Override
????public?void?run(String...?strings)?throws?Exception?{
????????System.out.println("order2:TestCommandLineRunner");
????}
}
總結(jié)
@Component注解的類,加載類并初始化對(duì)象進(jìn)行自動(dòng)注入。加載類時(shí)首先要執(zhí)行static靜態(tài)代碼塊中的代碼,之后再初始化對(duì)象時(shí)會(huì)執(zhí)行構(gòu)造方法。@PostConstruct注解的方法。當(dāng)容器啟動(dòng)成功后,再根據(jù)@Order注解的順序調(diào)用CommandLineRunner和ApplicationRunner接口類中的run方法。static>constructer>@PostConstruct>CommandLineRunner和ApplicationRunner.往期熱門文章:
1、Mybatis-Plus官方發(fā)布分庫分表神器,一個(gè)依賴輕松搞定!
2、Java 中的 BigDecimal,80% 的人竟然都用錯(cuò)了。。。
3、從5秒優(yōu)化到1秒,系統(tǒng)飛起來了...
4、Java/Spring/Dubbo三種SPI機(jī)制,誰更好?
5、我用Java幾分鐘處理完30億個(gè)數(shù)據(jù)...
6、炸了!Java多線程批量操作,居然有人不做事務(wù)控制
評(píng)論
圖片
表情
