成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringBoot中怎么通過(guò)ApplicationArguments獲取args參數(shù)

本篇文章給大家分享的是有關(guān)Spring Boot中怎么通過(guò)ApplicationArguments獲取args參數(shù),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

創(chuàng)新互聯(lián)建站是少有的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型企業(yè)網(wǎng)站、微信小程序定制開(kāi)發(fā)、手機(jī)APP,開(kāi)發(fā)、制作、設(shè)計(jì)、友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,于2013年開(kāi)始,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪(fǎng)客多年來(lái)深受用戶(hù)好評(píng)

1,直接使用new DefaultApplicationArguments( args)進(jìn)行轉(zhuǎn)換。

public ConfigurableApplicationContext run(String... args) {
    // 下面的內(nèi)容,封裝String... args成 ApplicationArguments
}
// 將參數(shù)封裝到ApplicationArguments對(duì)象中
ApplicationArguments applicationArguments = new DefaultApplicationArguments( args);

在具體使用Spring Boot的過(guò)程中,如果需要獲得SpringApplication.run(args)方法傳遞的參數(shù),那么可通過(guò)ApplicationArguments接口來(lái)獲得。

2,使用方法非常簡(jiǎn)單,只用在需要獲得參數(shù)的類(lèi)中直接注入ApplicationArguments即可。

如下代碼:

@Component
public class ArgsBean {

	@Resource
	private ApplicationArguments arguments;

	public void printArgs() {
		System.out.println("# 非選項(xiàng)參數(shù)數(shù)量: " + arguments.getNonOptionArgs().size());
		System.out.println("# 選項(xiàng)參數(shù)數(shù)量: " + arguments.getOptionNames().size());
		System.out.println("# 非選項(xiàng)參具參數(shù):");
		arguments.getNonOptionArgs().forEach(System.out::println);

		System.out.println("# 選項(xiàng)參數(shù)具體參數(shù):");
		arguments.getOptionNames().forEach(optionName -> {
			System.out.println("--" + optionName + "=" + arguments.getOptionValues(optionName));
		});
	}

}

3,還有一種是springboot的Application實(shí)現(xiàn)了ApplicationRunner這個(gè)接口。

package com.imddysc.testc;

import java.util.Iterator;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

import com.imddysc.testc.util.SpringContextUtils;

@SpringBootApplication
public class Application2 implements ApplicationRunner {
	
	private static final Logger logger = LoggerFactory.getLogger(Application2.class);
	
	@Autowired
	private static SpringContextUtils springContextUtils;

	public static void main(String[] args) throws Exception {
		new SpringApplicationBuilder(Application2.class).web(WebApplicationType.NONE) // .REACTIVE, .SERVLET
		.run(args);
		logger.info("啟動(dòng)完成!");
	}

	@Override
	public void run(ApplicationArguments args) throws Exception {
		logger.info("spring boot not web!!! SpringBoot Application Runner ... ");
		
		HdfsHttp hdfsHttp = new HdfsHttp();
		hdfsHttp.getRandomIp();
		
		/** 默認(rèn)參數(shù) */
		String mkdir = "";  // --mkdir=upload/xxx/
		String put = "";  // --uploadfile=a.txt
		String get = "";  // --uploadNewFileName=aaa.txt
		String localfile = "";
		String descfile = "";
		String mkdirpath = "";
		
		/** 有幫助與否顯示幫助 */
		Set<String> argsSet = args.getOptionNames();
		if (argsSet.isEmpty() || argsSet.contains("help")) {
			printHelp();
			System.exit(1);
		}
		
		/** 參數(shù)賦值 */
		if (!argsSet.isEmpty()) {
			for (Iterator iterator = argsSet.iterator(); iterator.hasNext();) {
				String arg = (String) iterator.next();
				if (arg.equalsIgnoreCase("localfile")) {
					localfile = args.getOptionValues("localfile").get(0);
				}
				if (arg.equalsIgnoreCase("descfile")) {
					descfile = args.getOptionValues("descfile").get(0);
				}
				if (arg.equalsIgnoreCase("mkdirpath")) {
					mkdirpath = args.getOptionValues("mkdirpath").get(0);
				}
			}
		}
		/** 處理--mkdir */
		if (argsSet.contains("mkdir")) {
			logger.info("mkdirpath: " + mkdirpath);
			if (mkdirpath.isEmpty() || mkdirpath.length() == 0) {
				logger.info("mkdirpath參數(shù)為空!");
				System.exit(1);
			}
			HdfsFile hdfsFile = new HdfsFile();
			hdfsFile.mkdir(mkdirpath);
			System.exit(1);
		}
		/** 處理--put */
		if (argsSet.contains("put")) {
			logger.info("localfile: " + localfile);
			logger.info("descfile: " + descfile);
			if (localfile.isEmpty() || localfile.length() == 0 || descfile.isEmpty() || descfile.length() == 0) {
				logger.info("localfile參數(shù)為空,或者descfile參數(shù)為空!");
				System.exit(1);
			}
			HdfsFile hdfsFile = new HdfsFile();
			hdfsFile.putFile(localfile, descfile);
			System.exit(1);
		}
		/** 處理--get */
		if (argsSet.contains("get")) {
			logger.info("descfile: " + descfile);
			logger.info("localfile: " + localfile);
			if (localfile.isEmpty() || localfile.length() == 0 || descfile.isEmpty() || descfile.length() == 0) {
				logger.info("localfile參數(shù)為空,或者descfile參數(shù)為空!");
				System.exit(1);
			}
			HdfsFile hdfsFile = new HdfsFile();
			hdfsFile.getFile(descfile, localfile);
			System.exit(1);
		}
		
	}
	
	public static void printHelp() {
		System.out.println("--mkdir --mkdirpath=要?jiǎng)?chuàng)建的路徑");
		System.out.println("--put --localfile=要上傳的文件, --descfile=上傳的目錄(遠(yuǎn)端)");
		System.out.println("--get --descfile=要下載的文件, --localfile下載的目錄(本地)");
		System.out.println("--get --descfile=cloud/a.txt --localfile=E:/codes/");
	}

}

4,提到了ApplicationRunner 再提提CommandLineRunner。

看一下CommandLineRunner和ApplicationRunner的源代碼

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;

}
public interface ApplicationRunner {

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

}

它們唯一不同便是run方法的參數(shù) 。

通過(guò)接口的官方文檔,我們得知其實(shí)執(zhí)行CommandLineRunner和ApplicationRunner的實(shí)現(xiàn)類(lèi)是有順序的,只不過(guò)在示例中并沒(méi)有展示。針對(duì)上面的示例,我們可以通過(guò)@Order或?qū)崿F(xiàn)Ordered接口來(lái)對(duì)其指定執(zhí)行順序。

第二部分:常見(jiàn)API介紹

獲取對(duì)應(yīng)的有選項(xiàng)的選項(xiàng)名稱(chēng)集合
Set<String> getOptionNames()

判斷是否包含某個(gè)選項(xiàng)名稱(chēng)否
boolean containsOption(String name)

根據(jù)選項(xiàng)名稱(chēng)返回一個(gè)選項(xiàng)值列表
List<String> getOptionValues(String name)

返回非選項(xiàng)值列表
List<String> getNonOptionArgs()

返回源參數(shù)字符串?dāng)?shù)組
String[] getSourceArgs()

以上就是Spring Boot中怎么通過(guò)ApplicationArguments獲取args參數(shù),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱(chēng):SpringBoot中怎么通過(guò)ApplicationArguments獲取args參數(shù)
URL分享:http://jinyejixie.com/article4/pshjie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站維護(hù)網(wǎng)站收錄、App開(kāi)發(fā)、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
邻水| 玉林市| 溧阳市| 新乐市| 营口市| 茌平县| 崇仁县| 集贤县| 华阴市| 宁阳县| 晋城| 百色市| 章丘市| 吉木乃县| 大姚县| 施秉县| 婺源县| 台湾省| 华安县| 砚山县| 疏附县| 望江县| 忻城县| 阿克苏市| 舟山市| 辰溪县| 格尔木市| 通化市| 大化| 民丰县| 离岛区| 边坝县| 甘南县| 正蓝旗| 河曲县| 柞水县| 惠来县| 呼玛县| 闻喜县| 巴中市| 牙克石市|