日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot CommandLineRunner和ApplicationRunner

發(fā)布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot CommandLineRunner和ApplicationRunner 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在本快速教程中,我們將探索Spring Boot中兩個非常流行的界面: CommandLineRunner和ApplicationRunner 。

這些接口的一種常見用例是在應用程序啟動時加載一些靜態(tài)數(shù)據(jù)。 雖然,我看到這種用法主要用于測試數(shù)據(jù)設置。

它們都是帶有run()方法的功能接口。 此Run()方法在ApplicationContext加載之后和SpringApplication#run方法執(zhí)行結束之前立即執(zhí)行。

我們可以在CommandLineRunner的run()方法中以原始String的形式訪問應用程序參數(shù)。

讓我們借助示例來看看。

首先,讓我們編寫一個實現(xiàn)CommandLineRunner接口的bean:

@Component public class SampleCmdRunner implements CommandLineRunner { ?private static final Logger LOG = LoggerFactory.getLogger(SampleCmdRunner. class ); ???@Override public void run(String[] args) { LOG.info( "Executing the command line runner, Application arguments: " + Arrays.toString(args)); } }

現(xiàn)在,讓我們引導我們的Spring Boot應用程序可執(zhí)行jar :

java -jar SampleApp- 1.0 .jar parameter1 parameter2 parameter3

以及三個命令行參數(shù): parameter1,parameter2和parameter3 。

我們的控制臺日志將是:

sbcetTomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) Executing the command line runner, Application arguments: [parameter1, parameter2, parameter3] 2019 - 09 - 02 11 : 02 : 10.111 INFO 7676 --- [main] com.programmergirl.SampleApp : Started SampleApp in 2.11 seconds

列出所有提供的參數(shù)的位置。

類似地,我們可以定義實現(xiàn)ApplicationRunner接口的bean:

@Component public class SampleAppRunner implements ApplicationRunner { ????private static final Logger LOG = LoggerFactory.getLogger(SampleAppRunner. class ); ????@Override public void run(ApplicationArguments args) { LOG.info( "Executing SampleAppRunner" ); } ? }

ApplicationRunner提供對ApplicationArguments的訪問,而不僅僅是原始String參數(shù)。 從技術上來講,這是它們之間的唯一區(qū)別。

有多少

我們可以根據(jù)需要自由定義任意數(shù)量的CommandLineRunner和ApplicationRunner實現(xiàn)。

Java 8定義:

使用Java 8 lambda, 我們可以有一個代碼:

@SpringBootApplication public class SampleApp { ?public static void main(String[] args) { SpringApplication.run(SampleApp. class , args); } ?@Bean CommandLineRunner commandLineRunner() { return args -> System.out.println( "CommandLineRunner with args:" + Arrays.toString(args)); } ?@Bean ApplicationRunner applicationRunner() { return args -> System.out.println( "ApplicationRunner with args:" + Arrays.toString(args.getSourceArgs())) } }

它在我們的Application類本身中定義了這些接口的實現(xiàn)。

訂購:

我們還可以使用@Order注釋對這些bean的執(zhí)行施加順序。

說,我們有兩個CommandLineRunner實現(xiàn):

@Component @Order ( 1 ) public class CmdRunner1 implements CommandLineRunner { private static final Logger LOG = LoggerFactory.getLogger(CmdRunner1. class ); ????@Override public void run(String[] args) { LOG.info( "In CmdRunner1" ); } } ? @Component @Order ( 3 ) public class CmdRunner2 implements CommandLineRunner { ?private static final Logger LOG = LoggerFactory.getLogger(CmdRunner2. class ); ????@Override public void run(String[] args) { LOG.info( "In CmdRunner2" ); } }

連同實現(xiàn)ApplicationRunner的類:

@Component @Order ( 2 ) public class AppRunner implements ApplicationRunner { private static final Logger LOG = LoggerFactory.getLogger(AppRunner. class ); ?@Override public void run(ApplicationArguments args) { LOG.info( "In AppRunner" ); } }

顯然,我們的CmdRunner1將首先執(zhí)行,然后是AppRunner ,最后是CmdRunner2。

結論:

在本教程中,我們討論了Spring Boot提供的CommandLineRunner和ApplicationRunner接口。

翻譯自: https://www.javacodegeeks.com/2019/09/spring-boot-commandlinerunner-and-applicationrunner.html

總結

以上是生活随笔為你收集整理的Spring Boot CommandLineRunner和ApplicationRunner的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。