1. 程式人生 > >SpringBoot之CommandLineRunner介面

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內建的事件

  1. ContextRefreshedEvent:ApplicationContext容器初始化或者重新整理時觸發該事件。 ContextStartedEvent:當使用ConfigurableApplicationContext介面的start()方法啟動ApplicationContext容器時觸發該事件。
  2. ContextClosedEvent:當使用ConfigurableApplicationContext介面的close()方法關閉ApplicationContext容器時觸發該事件。
  3. ContextStopedEvent:
    當使用ConfigurableApplicationContext介面的stop()方法停止ApplicationContext容器時觸發該事件。

相關推薦

資料新增非同步解析重新整理大資料量redis (——)(二) SpringBootCommandLineRunner介面和ApplicationRunner介面

在spring boot應用中,我們可以在程式啟動之前執行任何任務。為了達到這個目的,我們需要使用CommandLineRunner或ApplicationRunner介面建立bean,spring boot會自動監測到它們。這兩個介面都有一個run()方法,在實現介面時需要覆蓋該方法,並使用@

SpringBootCommandLineRunner介面

業務場景: 應用服務啟動時,載入一些資料和執行一些應用的初始化動作。如:刪除臨時檔案,清除快取資訊,讀取配置檔案資訊,資料庫連線等。 1、SpringBoot提供了CommandLineRunner介面。當有該介面多個實現類時,提供了@order註解實現自定

SpringBootCommandLineRunner介面和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搭建SpringBootHelloWorld

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 ; 我們先新

springbootdocker啟動參數傳遞

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