日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Spring BOOT 啟動(dòng)參數(shù)

來(lái)源: 責(zé)編: 時(shí)間:2023-09-28 10:08:09 295觀看
導(dǎo)讀Spring BOOT 啟動(dòng)參數(shù)在Java Web的開(kāi)發(fā)完成后,以前我們都會(huì)打包成war文件,然后放大web容器,比如tomcat、jetty這樣的容器。現(xiàn)在基于SpringBoot開(kāi)發(fā)的項(xiàng)目,我們直接打包成jar文件,基于內(nèi)嵌的tomcat來(lái)實(shí)現(xiàn)一樣的效果。而啟動(dòng)

Spring BOOT 啟動(dòng)參數(shù)

在Java Web的開(kāi)發(fā)完成后,以前我們都會(huì)打包成war文件,然后放大web容器,比如tomcat、jetty這樣的容器。現(xiàn)在基于SpringBoot開(kāi)發(fā)的項(xiàng)目,我們直接打包成jar文件,基于內(nèi)嵌的tomcat來(lái)實(shí)現(xiàn)一樣的效果。GDQ28資訊網(wǎng)——每日最新資訊28at.com

而啟動(dòng)的方式變成了這樣:GDQ28資訊網(wǎng)——每日最新資訊28at.com

java [ options ] -jar *.jar [ arguments ]

常見(jiàn)配置

我們常見(jiàn)的配置有:GDQ28資訊網(wǎng)——每日最新資訊28at.com

  1. --server.port:指定應(yīng)用程序的端口號(hào)
  2. --spring.profiles.active:設(shè)置應(yīng)用程序使用的配置文件中的環(huán)境配置。
  3. --spring.config.additional-location:指定額外的配置文件路徑。
  4. --Xms:設(shè)置JVM初始堆大小。
  5. --Xmx:設(shè)置JVM最大堆大小。
  6. --XX:PermSize:設(shè)置JVM永久代大小。
  7. --XX:MaxPermSize:設(shè)置JVM最大永久代大小。
  8. --Xdebug:開(kāi)啟遠(yuǎn)程JDWP調(diào)試。
  9. -D:定義屬性

options

在啟動(dòng)參數(shù)中,我們可以通過(guò)添加這樣的配置,來(lái)覆蓋系統(tǒng)屬性中的值:GDQ28資訊網(wǎng)——每日最新資訊28at.com

java -Dfile.encoding=UTF-8 -jar app.jar

在代碼中可以通過(guò)這樣獲取該值:GDQ28資訊網(wǎng)——每日最新資訊28at.com

String fileEncoding = System.getProperties("file.encoding"); //UTF-8

在很多項(xiàng)目中,都會(huì)基于*System.getProperties()*來(lái)控制代碼流程,這里要注意,通過(guò)啟動(dòng)參數(shù)配置的值優(yōu)先級(jí)會(huì)大于系統(tǒng)中的配置。同時(shí)注意改配置出現(xiàn)的位置,在上面使用了options位置來(lái)進(jìn)行區(qū)分。GDQ28資訊網(wǎng)——每日最新資訊28at.com

arguments

在SpringBoot項(xiàng)目中,我們一般把配置都會(huì)寫(xiě)在application.yml文件中,隨著項(xiàng)目一并打包到j(luò)ar文件中,在生產(chǎn)環(huán)境中, 啟動(dòng)項(xiàng)目時(shí)通過(guò)添加*--spring.config.location=/application.yml*來(lái)修改項(xiàng)目的配置文件指向,從而實(shí)現(xiàn)覆蓋application的效果。GDQ28資訊網(wǎng)——每日最新資訊28at.com

同樣,我們可以通過(guò)配置啟動(dòng)參數(shù)來(lái)覆蓋application中的某個(gè)配置項(xiàng),比如:GDQ28資訊網(wǎng)——每日最新資訊28at.com

java -Dfile.encoding=UTF-8 -jar app.jar --server.port=8080

可以在main方法的參數(shù)中獲取該值GDQ28資訊網(wǎng)——每日最新資訊28at.com

log.info(">>>>> args: {}", Arrays.toString(args) );

參數(shù)的位置在上面對(duì)應(yīng)arguments位置。GDQ28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)先級(jí)

系統(tǒng)參數(shù)或環(huán)境變量:GDQ28資訊網(wǎng)——每日最新資訊28at.com

  • 啟動(dòng)配置
  • set prop=value (export prop=value)
  • 系統(tǒng)中配置的參數(shù)或環(huán)境變量

Spring中的配置:GDQ28資訊網(wǎng)——每日最新資訊28at.com

  • 啟動(dòng)參數(shù)
  • --spring.config.location=application.yml
  • classpath:application.yml

EnvironmentAware

在Spring中,提供了一個(gè)Aware接口EnvironmentAware,通過(guò)該接口我們可以很方便地獲取上面說(shuō)的那些參數(shù),不用關(guān)心是系統(tǒng)屬性、環(huán)境變量還是main方法的args。GDQ28資訊網(wǎng)——每日最新資訊28at.com

public class MyService implements ApplicationContextAware, EnvironmentAware {        @Override    public void setEnvironment(Environment environment) {        // 可以讀取System properties|env 數(shù)據(jù);系統(tǒng)參數(shù)        log.info(">>>>> 從系統(tǒng)屬性中取值: {}", environment.getProperty("file.encoding") );    }}

通過(guò)觀察SpringBoot啟動(dòng)流程中,其中在SpringApplication的run方法中,可以看到系統(tǒng)環(huán)境屬性加載過(guò)程GDQ28資訊網(wǎng)——每日最新資訊28at.com

ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments);

基于StandardEnvironment的擴(kuò)展。GDQ28資訊網(wǎng)——每日最新資訊28at.com

public class StandardEnvironment extends AbstractEnvironment {     public static final String SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME = "systemEnvironment";     public static final String SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME = "systemProperties";     @Override protected void customizePropertySources(MutablePropertySources propertySources) {  propertySources.addLast(    new PropertiesPropertySource(SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, getSystemProperties()));  propertySources.addLast(    new SystemEnvironmentPropertySource(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, getSystemEnvironment())); }}

我們看到的這樣的寫(xiě)法其實(shí)就是基于SpEL對(duì)PropertySources的資源的解析:GDQ28資訊網(wǎng)——每日最新資訊28at.com

@Value("#{systemProperties['file.encoding']}")    private String fileEncoding;    @Value("#{systemEnvironment['JAVA_HOME']}")    private String javaHome;

讀取配置順序

  1. 默認(rèn)配置:Spring Boot 默認(rèn)提供了一些基本的配置,如應(yīng)用程序的端口號(hào)、上下文路徑等。這些配置位于 SpringBoot jar 包中的默認(rèn)配置文件中。
  2. 用戶自定義配置:如果應(yīng)用程序中有自定義的配置文件,Spring Boot 會(huì)首先加載這些文件。用戶可以通過(guò)在應(yīng)用程序的 classpath 下放置一個(gè)名為 application.properties 或 application.yml 的文件來(lái)提供自定義配置。
  3. 命令行參數(shù):在啟動(dòng)應(yīng)用程序時(shí),可以通過(guò)命令行參數(shù)來(lái)傳遞配置。這些參數(shù)會(huì)被加載并覆蓋默認(rèn)配置和用戶自定義配置。
  4. 環(huán)境變量:環(huán)境變量也可以提供配置信息。如果應(yīng)用程序中定義了環(huán)境變量,它們將被加載并覆蓋默認(rèn)配置、用戶自定義配置和命令行參數(shù)。
  5. 系統(tǒng)屬性:系統(tǒng)屬性也可以提供配置信息。如果應(yīng)用程序中定義了系統(tǒng)屬性,它們將被加載并覆蓋默認(rèn)配置、用戶自定義配置、命令行參數(shù)和環(huán)境變量。

Springboot會(huì)先加載PropertiesPropertySourceLoader,后加載YamlPropertySourceLoader,所以先讀取的是properties文件。GDQ28資訊網(wǎng)——每日最新資訊28at.com

結(jié)束語(yǔ)

了解SpringBoot配置加載相關(guān)知識(shí),可以有效解決配置項(xiàng)不生效問(wèn)題以及需要快速修改配置項(xiàng)的情況。GDQ28資訊網(wǎng)——每日最新資訊28at.com

需要注意的是,在加載多個(gè)配置文件時(shí),如果有沖突的配置項(xiàng),后加載的配置文件中的配置項(xiàng)將覆蓋先加載的配置文件中的相同配置項(xiàng)。因此,在應(yīng)用程序中,應(yīng)該避免使用相同的配置項(xiàng)名來(lái)定義不同的配置值。GDQ28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-11852-0.htmlSpring BOOT 啟動(dòng)參數(shù)

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 使用查詢分離后從20s優(yōu)化到500ms

下一篇: 五分鐘k8s入門(mén)到實(shí)戰(zhàn)-應(yīng)用配置

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • Redmi Pad評(píng)測(cè):紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍(lán)牙耳機(jī)到筆記本電腦,紅米不知不覺(jué)之間也已經(jīng)形成了自己頗有競(jìng)爭(zhēng)力的產(chǎn)品體系,在中端和次旗艦市場(chǎng)上甚至要比小米新機(jī)的表現(xiàn)來(lái)得更好,正所謂“大丈夫生居
  • 企業(yè)采用CRM系統(tǒng)的11個(gè)好處

    客戶關(guān)系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動(dòng),以改善客戶體驗(yàn)和滿意度。  CRM軟件市場(chǎng)規(guī)模如今超過(guò)580
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個(gè)人開(kāi)發(fā)仿造稿定設(shè)計(jì)的圖片編輯器到現(xiàn)在,不知不覺(jué)已過(guò)去一年時(shí)間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒(méi)有很好地履行計(jì)劃.....這些就放在日
  • 這款新興工具平臺(tái),讓你的電腦效率翻倍

    隨著信息技術(shù)的發(fā)展,我們獲取信息的渠道越來(lái)越多,但是處理信息的效率卻成為一個(gè)瓶頸。于是各種工具應(yīng)運(yùn)而生,都在爭(zhēng)相解決我們的工作效率問(wèn)題。今天我要給大家介紹一款效率
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來(lái)源:價(jià)值研究所 作者:Hernanderz“難道就因?yàn)樽约旱囊粋€(gè)產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運(yùn)營(yíng)上的問(wèn)題,選擇逃避了嗎?”這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 自律,給不了Keep自由!

    來(lái)源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時(shí)不好說(shuō),但大概率不能給Keep自由。近日,全球最大的在線健身平臺(tái)Keep正式登陸港交所,努力
  • 華為Mate60標(biāo)準(zhǔn)版細(xì)節(jié)曝光:經(jīng)典星環(huán)相機(jī)模組回歸

    這段時(shí)間以來(lái),關(guān)于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開(kāi)始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購(gòu)買(mǎi)

    2022年1月份在國(guó)際消費(fèi)電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現(xiàn)在已經(jīng)可以購(gòu)買(mǎi)了,這款筆記本電腦被譽(yù)為世界上最薄的 14 英寸游戲筆
  • 由于成本持續(xù)增加,筆記本產(chǎn)品價(jià)格預(yù)計(jì)將明顯上漲

    根據(jù)知情人士透露,由于材料、物流等成本持續(xù)增加,筆記本產(chǎn)品價(jià)格預(yù)計(jì)將在2021年下半年有明顯上漲。進(jìn)入6月下旬以來(lái),全球半導(dǎo)體芯片缺貨情況加劇,顯卡、處理器
Top 主站蜘蛛池模板: 肇庆市| 视频| 蕲春县| 湖州市| 原阳县| 田东县| 读书| 望都县| 罗源县| 远安县| 广宗县| 汉寿县| 肇州县| 白银市| 岗巴县| 桐梓县| 揭阳市| 武穴市| 辽宁省| 八宿县| 永康市| 温宿县| 分宜县| 海口市| 磴口县| 武冈市| 呼和浩特市| 合川市| 遵化市| 关岭| 建昌县| 贡嘎县| 白朗县| 南昌县| 奈曼旗| 马山县| 灵川县| 苗栗市| 泰兴市| 枣阳市| 万载县|