在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring Boot配置加載相關(guān)知識(shí)

科技綠洲 ? 來(lái)源:了不起 ? 作者:了不起 ? 2023-10-07 15:47 ? 次閱讀

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)的方式變成了這樣:

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

常見(jiàn)配置

我們常見(jiàn)的配置有:

  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)屬性中的值:

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

在代碼中可以通過(guò)這樣獲取該值:

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ū)分。

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的效果。

同樣,我們可以通過(guò)配置啟動(dòng)參數(shù)來(lái)覆蓋application中的某個(gè)配置項(xiàng),比如:

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

可以在main方法的參數(shù)中獲取該值

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

參數(shù)的位置在上面對(duì)應(yīng)arguments位置。

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

系統(tǒng)參數(shù)或環(huán)境變量:

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

Spring中的配置:

  • 啟動(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。

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ò)程

ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments);

基于StandardEnvironment的擴(kuò)展。

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的資源的解析:

@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文件。

結(jié)束語(yǔ)

了解SpringBoot配置加載相關(guān)知識(shí),可以有效解決配置項(xiàng)不生效問(wèn)題以及需要快速修改配置項(xiàng)的情況。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    24742
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    964

    瀏覽量

    32077
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    495

    瀏覽量

    22061
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3268

    瀏覽量

    57704
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14343
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    啟動(dòng)Spring Boot項(xiàng)目應(yīng)用的三種方法

    首先大家了解什么是Spring BootSpring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用
    發(fā)表于 01-14 17:33

    Spring Boot嵌入式Web容器原理是什么

    ,不需要配置任何特殊的XML配置,為了這個(gè)目標(biāo),Spring BootSpring 4.0框架之上提供了很多特性,幫助應(yīng)用以“約定優(yōu)于
    發(fā)表于 12-16 07:57

    Spring Boot從零入門(mén)1 詳述

    在開(kāi)始學(xué)習(xí)Spring Boot之前,我之前從未接觸過(guò)Spring相關(guān)的項(xiàng)目,Java基礎(chǔ)還是幾年前自學(xué)的,現(xiàn)在估計(jì)也忘得差不多了吧,寫(xiě)Spring
    的頭像 發(fā)表于 12-10 22:18 ?639次閱讀

    Spring認(rèn)證」什么是Spring GraphQL?

    這個(gè)項(xiàng)目建立在 Boot 2.x 上,但它應(yīng)該與最新的 Boot2.4.x5 相關(guān)。 要?jiǎng)?chuàng)建項(xiàng)目,請(qǐng)轉(zhuǎn)到start.spring.io并為要使用的GraphQL傳輸選擇啟動(dòng)器: 啟動(dòng)機(jī)
    的頭像 發(fā)表于 08-10 14:08 ?825次閱讀
    「<b class='flag-5'>Spring</b>認(rèn)證」什么是<b class='flag-5'>Spring</b> GraphQL?

    Spring認(rèn)證是什么?

    ,例如:配置、組件掃描、AOP、數(shù)據(jù)訪問(wèn)和事務(wù)、REST、安全、自動(dòng)配置、執(zhí)行器、 Spring boot測(cè)試等。
    的頭像 發(fā)表于 07-04 10:19 ?1318次閱讀
    <b class='flag-5'>Spring</b>認(rèn)證是什么?

    Spring Boot特有的實(shí)踐

    Spring Boot是最流行的用于開(kāi)發(fā)微服務(wù)的Java框架。在本文中,我將與你分享自2016年以來(lái)我在專業(yè)開(kāi)發(fā)中使用Spring Boot所采用的最佳實(shí)踐。這些內(nèi)容是基于我的個(gè)人經(jīng)驗(yàn)
    的頭像 發(fā)表于 09-29 10:24 ?911次閱讀

    強(qiáng)大的Spring Boot 3.0要來(lái)了

    來(lái)源:OSC開(kāi)源社區(qū)(ID:oschina2013) Spring Boot 3.0 首個(gè) RC 已發(fā)布,此外還為兩個(gè)分支發(fā)布了更新:2.7.5 2.6.13。 3.0.0-RC1: https
    的頭像 發(fā)表于 10-31 11:17 ?1874次閱讀

    Spring Boot Web相關(guān)的基礎(chǔ)知識(shí)

    上一篇文章我們已經(jīng)學(xué)會(huì)了如何通過(guò)IDEA快速建立一個(gè)Spring Boot項(xiàng)目,還介紹了Spring Boot項(xiàng)目的結(jié)構(gòu),介紹了項(xiàng)目配置文件
    的頭像 發(fā)表于 03-17 15:03 ?658次閱讀

    簡(jiǎn)述Spring Boot數(shù)據(jù)校驗(yàn)

    上一篇文章我們了解了Spring Boot Web相關(guān)知識(shí),初步了解了spring-boot-starter-web,還了解了@Contr
    的頭像 發(fā)表于 03-17 15:07 ?779次閱讀

    Spring Boot時(shí)配置JSON序列化選項(xiàng)的幾種方法

    看看配置序列化和反序列化選項(xiàng)的最常用方法。 默認(rèn)配置 默認(rèn)情況下,Spring Boot配置將禁用以下
    的頭像 發(fā)表于 10-09 10:26 ?2180次閱讀

    Spring Boot Actuator快速入門(mén)

    一下 Spring Boot Actuator ,學(xué)習(xí)如何在 Spring Boot 2.x 中使用、配置和擴(kuò)展這個(gè)監(jiān)控工具。
    的頭像 發(fā)表于 10-09 17:11 ?638次閱讀

    Spring Boot啟動(dòng) Eureka流程

    在上篇中已經(jīng)說(shuō)過(guò)了 Eureka-Server 本質(zhì)上是一個(gè) web 應(yīng)用的項(xiàng)目,今天就來(lái)看看 Spring Boot 是怎么啟動(dòng) Eureka 的。 Spring Boot 啟動(dòng) E
    的頭像 發(fā)表于 10-10 11:40 ?894次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動(dòng) Eureka流程

    Spring Boot的啟動(dòng)原理

    可能很多初學(xué)者會(huì)比較困惑,Spring Boot 是如何做到將應(yīng)用代碼和所有的依賴打包成一個(gè)獨(dú)立的 Jar 包,因?yàn)閭鹘y(tǒng)的 Java 項(xiàng)目打包成 Jar 包之后,需要通過(guò) -classpath 屬性
    的頭像 發(fā)表于 10-13 11:44 ?650次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動(dòng)原理

    Spring Boot 的設(shè)計(jì)目標(biāo)

    Spring 框架復(fù)雜的XML配置。使用 Spring Boot 可以很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行的、基于 Spring 的生產(chǎn)級(jí)應(yīng)用程序,而且
    的頭像 發(fā)表于 10-13 14:56 ?587次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設(shè)計(jì)目標(biāo)

    Spring事務(wù)傳播性的相關(guān)知識(shí)

    本文主要介紹了Spring事務(wù)傳播性的相關(guān)知識(shí)
    的頭像 發(fā)表于 01-10 09:29 ?447次閱讀
    <b class='flag-5'>Spring</b>事務(wù)傳播性的<b class='flag-5'>相關(guān)</b><b class='flag-5'>知識(shí)</b>
    主站蜘蛛池模板: 五月婷婷六月婷婷| 国产精品久久永久免费| 狠狠色噜噜狠狠狠狠97老肥女 | 欧美黄业| 97人人做人人添人人爱| 在线观看中文字幕一区| 国产精品女丝袜白丝袜| 天堂在线观看视频观看www| 日韩a免费| 黄频网站免费大全在线观看| 在线视频资源| 看片国产| 8844aa在线毛片| 一级aa 毛片高清免费看| 日本美女中出| 岛国毛片| 久久草在线视频播放| 欧美黑人性受xxxx精品| 国产精品久久久久久久成人午夜| 女性一级全黄生活片免费看| 成人久久久久久| 欧美大色网| 日韩免费看| 色天天综合色天天看| 8888奇米四色在线| 日本三级精品| 日日操夜夜爽| 亚洲天堂三级| 很黄很色网站| 四虎tv在线观看884aa| 亚洲综合激情网| 高清国产下药迷倒美女| 福利片在线观看免费高清| 二区三区视频| 国产精品虐乳在线播放| 狂野欧美性猛交xxxx免费| 亚洲四虎| 又黄又爽的成人免费网站| 日本一区免费观看| 欧美日韩你懂的| 天天操天天碰|