亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

spring boot學習(4): 命令行啟動

Binguner / 1247人閱讀

摘要:在使用構(gòu)建應用啟動時,我們在工作中都是通過命令行來啟動應用,有時候會需要一些特定的參數(shù)以在應用啟動時,做一些初始化的操作。

在使用spring boot 構(gòu)建應用啟動時,我們在工作中都是通過命令行來啟動應用,有時候會需要一些特定的參數(shù)以在應用啟動時,做一些初始化的操作。

spring boot 提供了 CommandLineRunnerApplicationRunner 這兩個接口供用戶使用。

1. CommandLineRunner 1.1 聲明:
@FunctionalInterface
public interface CommandLineRunner {

    /**
     * Callback used to run the bean.
     * @param args incoming main method arguments
     * @throws Exception on error
     */
    void run(String... args) throws Exception;

}
1.2 使用:
package com.example.consoleapplication;

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class TestRunner implements CommandLineRunner {

    @Override
    public void run(String... args) {
        // Do something...
        for(String arg: args){
            System.out.println(arg);
        }
        System.out.print("test command runner");
    }
}
1.3 運行結(jié)果

運行: java -jar build/libs/consoleapplication-0.0.1-SNAPSHOT.jar -sdfsaf sdfas,
結(jié)果如下:

2019-03-16 17:31:56.544  INFO 18679 --- [           main] c.e.consoleapplication.DemoApplication   : No active profile set, falling back to default profiles: default
2019-03-16 17:31:57.195  INFO 18679 --- [           main] c.e.consoleapplication.DemoApplication   : Started DemoApplication in 16.172 seconds (JVM running for 16.65)
-sdfsaf
sdfas
test command runner%
2. ApplicationRunner 2.1 聲明
/**
 * Interface used to indicate that a bean should run when it is contained within
 * a {@link SpringApplication}. Multiple {@link ApplicationRunner} beans can be defined
 * within the same application context and can be ordered using the {@link Ordered}
 * interface or {@link Order @Order} annotation.
 *
 * @author Phillip Webb
 * @since 1.3.0
 * @see CommandLineRunner
 */
@FunctionalInterface
public interface ApplicationRunner {

    /**
     * Callback used to run the bean.
     * @param args incoming application arguments
     * @throws Exception on error
     */
    void run(ApplicationArguments args) throws Exception;

}
2.2 使用

ApplicationRunnerCommandLineRunner 的使用是有差別的:

CommandLineRunner 的使用,只是把參數(shù)根據(jù)空格分割。

ApplicationRunner 會根據(jù) 是否匹配 --key=value 來解析參數(shù),

能匹配,則為 optional 參數(shù), 可用getOptionValues獲取參數(shù)值。

不匹配則是 non optional 參數(shù)。

package com.example.consoleapplication;

import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import org.springframework.boot.ApplicationArguments;

@Component
public class TestApplicationRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // Do something...
        System.out.println("option arg names" + args.getOptionNames());
        System.out.println("non option+" +  args.getNonOptionArgs());
    }
}
2.3 運行結(jié)果

運行命令 java -jar build/libs/consoleapplication-0.0.1-SNAPSHOT.jar -non1 non2 --option=1, 結(jié)果為:

2019-03-16 18:08:08.528  INFO 19778 --- [           main] c.e.consoleapplication.DemoApplication   : No active profile set, falling back to default profiles: default
2019-03-16 18:08:09.166  INFO 19778 --- [           main] c.e.consoleapplication.DemoApplication   : Started DemoApplication in 16.059 seconds (JVM running for 16.56)
test
option arg names[option]
non option+[-non1, non2]-non1
non2
--option=1
test%

可以看到, optional 參數(shù)名有 option, non optional 參數(shù)有 -non1non2

3. 小結(jié)

CommandLineRunnerApplicationRunner 都能實現(xiàn)命令行應用啟動時根據(jù)參數(shù)獲取我們需要的值,做特殊的邏輯。但兩者有所不同,推薦使用 ApplicationRunneroptional 參數(shù), 方便擴展。

4. 參考文檔
https://docs.spring.io/spring...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/73738.html

相關(guān)文章

  • Spring Boot 應用 Docker 化 《Spring Boot 2.0極簡教程》(陳光劍)

    摘要:應用化極簡教程陳光劍基于的企業(yè)級應用開發(fā)最佳實踐前面的章節(jié)中,我們都是在環(huán)境中開發(fā)運行測試應用程序。關(guān)鍵字是分布式應用微服務(wù)容器虛擬化。通常,在企業(yè)項目實踐中,會實現(xiàn)一套應用部署發(fā)布的自動化運維平臺工具。 Spring Boot 應用 Docker 化 《Spring Boot 2.0極簡教程》(陳光劍)—— 基于 Gradle + Kotlin的企業(yè)級應用開發(fā)最佳實踐 前面的章節(jié)中,...

    Donne 評論0 收藏0
  • Spring Boot 應用 Docker 化 《Spring Boot 2.0極簡教程》(陳光劍)

    摘要:應用化極簡教程陳光劍基于的企業(yè)級應用開發(fā)最佳實踐前面的章節(jié)中,我們都是在環(huán)境中開發(fā)運行測試應用程序。關(guān)鍵字是分布式應用微服務(wù)容器虛擬化。通常,在企業(yè)項目實踐中,會實現(xiàn)一套應用部署發(fā)布的自動化運維平臺工具。 Spring Boot 應用 Docker 化 《Spring Boot 2.0極簡教程》(陳光劍)—— 基于 Gradle + Kotlin的企業(yè)級應用開發(fā)最佳實踐 前面的章節(jié)中,...

    rose 評論0 收藏0
  • Spring Boot 2 - 使用CommandLineRunner與ApplicationRun

    摘要:命令行參數(shù)傳遞之前我們說過使用的一大優(yōu)勢就是可以將工程直接打包成一個包而不需要單獨部署。執(zhí)行獲取到參數(shù)執(zhí)行結(jié)果我們可以發(fā)現(xiàn),通過方法的參數(shù)可以很方便地獲取到命令行參數(shù)的值。如果需要獲取命令行參數(shù)時則建議使用。 本篇文章我們將探討CommandLineRunner和ApplicationRunner的使用。 在閱讀本篇文章之前,你可以新建一個工程,寫一些關(guān)于本篇內(nèi)容代碼,這樣會加深你對本...

    alogy 評論0 收藏0
  • Spring-Boot學習筆記

    摘要:學習筆記使用很容易創(chuàng)建一個獨立運行運行內(nèi)嵌容器準生產(chǎn)級別的基于框架的項目,使用你可以不用或者只需要很少的配置。異常消息如果這個錯誤是由異常引起的。錯誤發(fā)生時請求的路徑。 Spring-Boot 1.5 學習筆記 使用Spring Boot很容易創(chuàng)建一個獨立運行(運行jar,內(nèi)嵌Servlet容器)、準生產(chǎn)級別的基于Spring框架的項目,使用Spring Boot你可以不用或者只需要很...

    curlyCheng 評論0 收藏0
  • Spring Boot 參考指南(安裝 Spring Boot

    摘要:安裝可以與經(jīng)典開發(fā)工具一起使用,也可以作為命令行工具安裝。下面的示例展示了一個典型的文件安裝命令行接口是一個命令行工具,你可以使用它來快速地實現(xiàn)的原型。 10. 安裝Spring Boot Spring Boot可以與經(jīng)典Java開發(fā)工具一起使用,也可以作為命令行工具安裝。無論哪種方式,都需要Java SDK v1.8或更高版本。在開始之前,你應該使用以下命令檢查當前的Java安裝: ...

    Donald 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<