激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - spring boot 命令行啟動的方式

spring boot 命令行啟動的方式

2021-07-22 15:57posuoren Java教程

這篇文章主要介紹了spring boot 命令行啟動的方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

spring boot 提供了 commandlinerunner 和 applicationrunner 這兩個接口供用戶使用。

1. commandlinerunner

1.1 聲明:

?
1
2
3
4
5
6
7
8
9
10
11
@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 使用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 運行結果

運行: java -jar build/libs/consoleapplication-0.0.1-snapshot.jar -sdfsaf sdfas,

結果如下:

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 聲明

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * interface used to indicate that a bean should <em>run</em> 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 使用

applicationrunner 和 commandlinerunner 的使用是有差別的:

  • commandlinerunner 的使用,只是把參數根據空格分割。
  • applicationrunner 會根據 是否匹配 --key=value 來解析參數,
    • 能匹配,則為 optional 參數, 可用getoptionvalues獲取參數值。
    • 不匹配則是 non optional 參數。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 運行結果

運行命令 java -jar build/libs/consoleapplication-0.0.1-snapshot.jar -non1 non2 --option=1, 結果為:

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 參數名有 option, non optional 參數有 -non1 和 non2

3. 小結

commandlinerunner 和 applicationrunner 都能實現命令行應用啟動時根據參數獲取我們需要的值,做特殊的邏輯。但兩者有所不同,推薦使用 applicationrunner 的 optional 參數, 方便擴展。

4. 參考文檔

https://docs.spring.io/spring-boot/docs/2.0.5.release/reference/htmlsingle/#boot-features-web-environment

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000018530137

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人毛片久久 | 在火车上摸两乳爽的大叫 | 天天看天天摸天天操 | 九九热精品在线 | 在线看免费观看日本 | 久久久久九九九女人毛片 | 久久国产精品久久精品国产演员表 | 91九色网址| 91色成人 | 狠狠色成色综合网 | 亚洲精华液久久含羞草 | 久久久午夜电影 | 日本一区二区视频在线观看 | 国产精品久久久久久久久久东京 | 毛片视频网址 | 国产精品av久久久久久网址 | 一级片九九 | 久久精品一区二区三区不卡牛牛 | 国产成人自拍视频在线 | 黄色影院在线观看视频 | 国产精品视频中文字幕 | 色妞色视频一区二区三区四区 | 成人黄色短视频在线观看 | 九九热在线视频免费观看 | 欧美性生交大片 | 国产亚洲欧美日韩高清 | 午夜网站视频 | 欧美高清视频一区 | 超碰97人 | 欧美一级三级在线观看 | 欧美特一级片 | 国产精品成人亚洲一区二区 | 国产亚洲精品综合一区91 | 午夜精品久久久久久久96蜜桃 | 亚洲极色| 午夜人体 | 亚洲影院在线播放 | 国产精品一区二区三区在线播放 | 一级黄色国产视频 | 午夜在线视频一区二区三区 | 成人毛片免费视频 |