SpringBoot啟動加載類ApplicationRunner


  關於這個ApplicationRunner的使用場景,今天有些新的理解。

1.說明

  希望項目在啟動的時候加載一些系統參數,就要用到ApplicationRunner

  ApplicationRunner是一個接口,我們需要實現它,並重寫run()方法,當項目啟動時,run()方法便會自動執行。

 

2.場景2

  這個接口只有這點功能,我們也許感覺,springboot中在啟動中加載參數,只用application.yml更加方便。

  其實,這里有一種場景就非常適合使用這種場景。

  項目存在一個隊列,在項目一進行啟動就可以往隊列中添加數據,然后,從隊列中消費數據。

 

3.驗證

  結構:

  

  程序:

package com.jun.webpro.common.config.startup;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Slf4j
@Order(value = 1)
public class StartLoader implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args){
        loadSysParams();
    }
    public void loadSysParams(){
        System.out.println("【系統參數1】加載中...");

        System.out.println("【系統參數1】加載完成...");
    }
}

  

package com.jun.webpro.common.config.startup;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Slf4j
@Order(value = 2)
public class SecondLoader implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args){
        loadSysParams();
    }
    public void loadSysParams(){
        System.out.println("【系統參數2】加載中...");

        System.out.println("【系統參數2】加載完成...");
    }
}

  

4.結果:

  可以發現,在程序啟動之后,這里才運行起來。

2020-03-23 19:03:01.910  INFO 14084 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9090 (http) with context path ''
2020-03-23 19:03:01.913  INFO 14084 --- [           main] com.jun.webpro.WebproApplication         : Started WebproApplication in 6.988 seconds (JVM running for 7.941)
【系統參數1】加載中...
【系統參數1】加載完成...
【系統參數2】加載中...
【系統參數2】加載完成...

  

5.說明

  @Order說明加載順序

  @Component讓類進行自動加載。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM