SpringBoot之CommandLineRunner介面
業務場景:
應用服務啟動時,載入一些資料和執行一些應用的初始化動作。如:刪除臨時檔案,清除快取資訊,讀取配置檔案資訊,資料庫連線等。
1、SpringBoot提供了CommandLineRunner介面。當有該介面多個實現類時,提供了@order註解實現自定義執行順序,也可以實現Ordered介面來自定義順序。
注意:數字越小,優先順序越高,也就是@Order(1)註解的類會在@Order(2)註解的類之前執行。
package com.example.studySpringBoot.init;
import com.example.studySpringBoot.service.MyMethorClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(value=1)
public class SpringDataInit implements CommandLineRunner {
@Autowired
private MyMethorClassService myMethorClassService;
@Override
public void run(String... strings) throws Exception {
int result = myMethorClassService.add(8, 56);
System.out.println("----------SpringDataInit1---------"+result);
}
}
package com.example.studySpringBoot.init;
import com.example.studySpringBoot.service.MyMethorClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(value=2)
public class SpringDataInit2 implements CommandLineRunner {
@Autowired
private MyMethorClassService myMethorClassService;
@Override
public void run(String... strings) throws Exception {
int result = myMethorClassService.add(10, 82);
System.out.println("----------SpringDataInit2---------"+result);
}
}
2、SpringBoot提供的ApplicationRunner介面也可以滿足該業務場景。不同點:ApplicationRunner中run方法的引數為ApplicationArguments,而CommandLineRunner介面中run方法的引數為String陣列。想要更詳細地獲取命令列引數,那就使用ApplicationRunner介面
package com.example.studySpringBoot.init;
import com.example.studySpringBoot.service.MyMethorClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
@Component
//@Order(value=3)
public class SpringDataInit3 implements ApplicationRunner,Ordered {
@Autowired
private MyMethorClassService myMethorClassService;
@Override
public void run(ApplicationArguments applicationArguments) throws Exception {
int result = myMethorClassService.add(10, 82);
System.out.println("----------SpringDataInit3---------"+result);
}
@Override
public int getOrder() {
return 3;
}
}
3、如果使用了Spring框架,則使用ApplicationListener介面也可以滿足該業務場景。
package com.example.studySpringBoot.init;
import com.example.studySpringBoot.service.MyMethorClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
@Configuration
public class SpringDoneDataInit implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private MyMethorClassService myMethorClassService;
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
int result = myMethorClassService.add(5, 10);
System.out.println("----------SpringDoneDataInit---------"+result);
}
}
spring內建的事件
- ContextRefreshedEvent:ApplicationContext容器初始化或者重新整理時觸發該事件。 ContextStartedEvent:當使用ConfigurableApplicationContext介面的start()方法啟動ApplicationContext容器時觸發該事件。
- ContextClosedEvent:當使用ConfigurableApplicationContext介面的close()方法關閉ApplicationContext容器時觸發該事件。
- ContextStopedEvent:
當使用ConfigurableApplicationContext介面的stop()方法停止ApplicationContext容器時觸發該事件。
相關推薦
資料新增非同步解析重新整理大資料量redis (——)(二) SpringBoot之CommandLineRunner介面和ApplicationRunner介面
在spring boot應用中,我們可以在程式啟動之前執行任何任務。為了達到這個目的,我們需要使用CommandLineRunner或ApplicationRunner介面建立bean,spring boot會自動監測到它們。這兩個介面都有一個run()方法,在實現介面時需要覆蓋該方法,並使用@
SpringBoot之CommandLineRunner介面
業務場景: 應用服務啟動時,載入一些資料和執行一些應用的初始化動作。如:刪除臨時檔案,清除快取資訊,讀取配置檔案資訊,資料庫連線等。 1、SpringBoot提供了CommandLineRunner介面。當有該介面多個實現類時,提供了@order註解實現自定
SpringBoot之CommandLineRunner介面和ApplicationRunner介面
我們在開發中可能會有這樣的情景。需要在容器啟動的時候執行一些內容。比如讀取配置檔案,資料庫連線之類的。SpringBoot給我們提供了兩個介面來幫助我們實現這種需求。這兩個介面分別為CommandLi
SpringBoot系列: CommandLineRunner介面的用處
========================================使用 CommandLineRunner 對Spring Bean進行額外初始化======================================== 如果想要在Spring 容器初始化做一些額外的工作, 比如要對Sp
SpringBoot中ApplicationContextAware介面和CommandLineRunner介面
1.ApplicationContextAware介面 ApplicationContext物件是Spring開源框架的上下文物件例項,在專案執行時自動裝載Handler內的所有資訊到記憶體。基於SpringBoot平臺完成Applicat
【Springboot之切面程式設計】註解實現介面防刷
來源:https://www.jianshu.com/p/697f1c5eaa3f?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq 本文介紹一種極簡潔、靈活通用
springboot之通用mapper擴充套件通用介面和Example 用法
專案中提供了大量現成的方法,這些方法可以作為擴充套件時的參考。例如 selectAll 方法。首先定義介面:@RegisterMapperpublic interface SelectAllMapper<T> { /** * 查詢全部結果 *
初學SpringBoot之二
containe web ram cli compress 刷新 app use ping 原文教程鏈接在此http://blog.csdn.net/lxhjh/article/details/51752419。 使用了org.slf4j.Logger和org.slf4j.
springboot 之HelloController
mapping () mave 文件 code app ring hello 添加jar包 1、搭建環境 1.1 新建一個maven項目,一路下一步 1.2 打開pom 文件,首先增加<parent></parent>標簽: <p
springboot 之Spring Web Mvc Framework
fig ftl pathvaria nts bean ddr got del view 1、SpringMvc自動配置 Spring Boot 為SpringMvc提供了自動配置。 自動配置包含Spring的以下特征: (1)視圖解析器ContentNegotiatingV
Springboot 之 自定義配置文件及讀取配置文件
ebo hello path host 目錄 tps pre 示例 control 本文章來自【知識林】 讀取核心配置文件 核心配置文件是指在resources根目錄下的application.properties或application.yml配置文件,讀取這兩個配置文件
Eclipse搭建SpringBoot之HelloWorld
nbsp xml文件 blank itl depend ips autoconf pack bin 你的eclipse需要先安裝 Spring Tool Suite? 首先新建Maven工程 勾選第一個按鈕,第三個是選擇working set ,你可以不選 下一步,配
SpringBoot之旅 -- 定時任務兩種(Spring Schedule 與 Quartz 整合 )實現
目的 config object cnblogs java title cor 進行 eat 相關文章 Spring Boot 相關文章目錄 前言 最近在項目中使用到定時任務,之前一直都是使用Quartz 來實現,最近看Spring 基礎發現其實Spring 提供
springBoot之配置文件的讀取以及過濾器和攔截器的使用
boolean nco 定義 www cheng handle mod HR out 前言 在之前的學習springBoot中,成功的實現了Restful風格的基本服務。但是想將之前的工程作為一個項目來說,那些是僅僅不夠的。可能還需要獲取自定義的配置以及添加過濾器和攔截器。
SpringBoot之配置google kaptcha
back put 是否 [] produce 邊框 驗證 servlet ray 項目中引入POM: <dependency> <groupId>com.google.code.kaptcha</groupId> <
SpringBoot之集成Spring AOP
切面 pen ogl rac return owa collect web ali SpringBoot集成ApringAOP步驟如下: 1.導包 <dependency> <groupId>org.s
SpringBoot之表單驗證@Valid
BE index ror ner HR 大小 doctype implement 空格 SpringBoot提供了強大的表單驗證功能實現,給我們省去了寫驗證的麻煩; 這裏我們給下實例,提交一個有姓名和年齡的表單添加功能, 要求姓名不能為空,年齡必須是不小於18 ; 我們先新
springboot之docker啟動參數傳遞
pom clas java_opts 網上 參數傳遞 朋友 就是 oracl slim 這幾天有網友問,如何在使用docker的情況下傳遞spring.profiles.active=test,也就是說springboot切換配置文件。以往我們直接通過java啟動jar的時
springboot之啟動原理解析
tor 支持 告訴 定制 root init listen 執行流程 config 本文轉載自:https://www.cnblogs.com/shamo89/p/8184960.html 前言 SpringBoot為我們做的自動配置,確實方便快捷,但是對於新手來說,如
SpringBoot之打war包
run pri aging override boot cti artifact sco dep 1.在 maven的 pom 中添加 <packaging>war</packaging> 2. 修改tomcat 依賴 <d