欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot引用外部配置文件的方法步驟

 更新時(shí)間:2019年04月09日 09:37:41   作者:月未明  
這篇文章主要介紹了Springboot引用外部配置文件的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

現(xiàn)在的項(xiàng)目越來(lái)越多的都是打包成jar運(yùn)行尤其是springboot項(xiàng)目,這時(shí)候配置文件如果一直放在項(xiàng)目中,每次進(jìn)行簡(jiǎn)單的修改時(shí)總會(huì)有些不方便,這里我們看下打包成jar之后,從外部配置文件中讀取配置信息。

首先想到的是通過(guò)java代碼讀取外邊某個(gè)路徑下的文件,但是開(kāi)始做之后發(fā)現(xiàn)好多問(wèn)題。后來(lái)又找其它解決方案,正好搜到一種簡(jiǎn)單的解決方式:

java -jar demo.jar --Dspring.config.location=myapplication.properties

這樣就可以通過(guò)@value注解讀取myapplication.properties中的配置信息了。(上邊的大寫(xiě)D好像可以不寫(xiě)的)

后來(lái)想著直接把spring.config.location寫(xiě)到application.properties配置文件中,然后指定一個(gè)固定的外部配置文件來(lái)獲取信息,這樣啟動(dòng)的時(shí)候就可以不用加最后一行了。

spring.config.location=C:\\Users\\Administrator\\git\\Display\\host.properties

可是這種方式是行不通的,比如我配置文件中有下面信息:

myname=hellopangkunkun

代碼:

myname=hellopangkunkun

我在啟動(dòng)的時(shí)候直接報(bào)這個(gè)地方的錯(cuò)誤,說(shuō)是無(wú)法找到myname,導(dǎo)致整個(gè)項(xiàng)目出異常。

后來(lái)搜了下文章,對(duì)比官網(wǎng)文檔,又得到了一些信息:

24.3 Application property files
SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment:

A /config subdirectory of the current directory.
The current directory
A classpath /config package
The classpath root
The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).

這里說(shuō)了四種方式可以把配置文件放到外部的。
第一種是在jar包的同一目錄下建一個(gè)config文件夾,然后把配置文件放到這個(gè)文件夾下;
第二種是直接把配置文件放到j(luò)ar包的同級(jí)目錄;
第三種在classpath下建一個(gè)config文件夾,然后把配置文件放進(jìn)去;
第四種是在classpath下直接放配置文件。

這四種方式的優(yōu)先級(jí)是從一到四一次降低的。

注: 一二兩種方案其實(shí)不是jar包的同級(jí)目錄,而是(執(zhí)行啟動(dòng)指令的)同級(jí)目錄。為了便于理解我把上面的當(dāng)前目錄說(shuō)成jar包的同級(jí)目錄,這種說(shuō)法并不對(duì)。如果是剛開(kāi)始接觸或者調(diào)試這塊,還是在jar包同級(jí)目錄方便。

由于我們是要從外部讀取文件,所以直接說(shuō)前兩種。

看下文件目錄結(jié)構(gòu):

這里的application.properties是我們的配置文件,config是創(chuàng)建的另外一個(gè)目錄,放的也是application.properties。

Display-1.0-SNAPSHOT.jar中可以包含application.properties配置文件也可以不包含。

為了驗(yàn)證可以在config中設(shè)置myname=name1,jar同級(jí)目錄中設(shè)置myname=name2,如果jar中包含配置文件,將其中設(shè)置成myname=name3。

直接使用指令啟動(dòng):

java -jar Display-1.0-SNAPSHOT.jar

之后驗(yàn)證可得知,我們通過(guò)@Value(“${myname}”)獲取到的myname的值是name1,把config下的配置文件刪除后獲取的結(jié)果是name2,都刪除后才會(huì)獲取jar包中配置文件的數(shù)據(jù)name3。

另外如果我們想要想配置測(cè)試、開(kāi)發(fā)、生產(chǎn)環(huán)境一樣使用另外一個(gè)配置文件怎么來(lái)實(shí)現(xiàn)呢?

下面繼續(xù),我把a(bǔ)pplication.properties的信息修改如下:

spring.profiles.active=dev,host

配置文件目錄結(jié)構(gòu):

 

我又新增了一個(gè)名為application-host.properties的配置文件,同理也可以把這個(gè)文件考出來(lái)放到j(luò)ar包外面,同級(jí)目錄或者config下。

這樣項(xiàng)目啟動(dòng)之后dev配置文件和host配置文件都會(huì)生效。

 

這里為了突出其他的配置文件我只把host的拷出來(lái)了,dev的還是在jar包里,application.properties配置文件放在jar中也一樣,我們需要的主要是host的配置文件。

這樣每次修改的時(shí)候只需要修改配置文件信息,然后重啟項(xiàng)目就好,不需要重新打包。

如果想要只修改配置文件,不重啟項(xiàng)目就能生效,可以考慮用java來(lái)讀取配置文件中的數(shù)據(jù),把它當(dāng)作一個(gè)普通文件來(lái)讀取,或者寫(xiě)到其他數(shù)據(jù)庫(kù)中也行。上面這些方案已經(jīng)能夠滿足我的需求了,所以其他的不在做了。

最后提個(gè)問(wèn)題,也是我沒(méi)弄明白的,希望知道的各位能夠給個(gè)答案:

我把spring.config.location這個(gè)配置寫(xiě)到配置文件中為什么沒(méi)有生效?

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用Spring?boot+LogBack+MDC實(shí)現(xiàn)鏈路追蹤

    利用Spring?boot+LogBack+MDC實(shí)現(xiàn)鏈路追蹤

    這篇文章主要介紹了利用Spring?boot+LogBack+MDC實(shí)現(xiàn)鏈路追蹤,MDC?可以看成是一個(gè)與當(dāng)前線程綁定的哈希表,可以往其中添加鍵值對(duì),下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-04-04
  • Java Spring分別實(shí)現(xiàn)定時(shí)任務(wù)方法

    Java Spring分別實(shí)現(xiàn)定時(shí)任務(wù)方法

    這篇文章主要為大家詳細(xì)介紹了Java與Spring設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法,定時(shí)任務(wù)的應(yīng)用場(chǎng)景十分廣泛,如定時(shí)清理文件、定時(shí)生成報(bào)表、定時(shí)數(shù)據(jù)同步備份等
    2022-07-07
  • Spring Boot中的JdbcTemplate是什么及用法小結(jié)

    Spring Boot中的JdbcTemplate是什么及用法小結(jié)

    Spring Boot中的JdbcTemplate是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)訪問(wèn)工具,它簡(jiǎn)化了數(shù)據(jù)庫(kù)操作的過(guò)程,在本文中,我們了解了JdbcTemplate的基本概念,并演示了如何在Spring Boot應(yīng)用程序中使用它,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 關(guān)于idea的gitignore文件編寫(xiě)及解決ignore文件不生效問(wèn)題

    關(guān)于idea的gitignore文件編寫(xiě)及解決ignore文件不生效問(wèn)題

    這篇文章主要介紹了idea的gitignore文件編寫(xiě)及解決ignore文件不生效問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 詳解Spring Boot Oauth2緩存UserDetails到Ehcache

    詳解Spring Boot Oauth2緩存UserDetails到Ehcache

    這篇文章主要介紹了詳解Spring Boot Oauth2緩存UserDetails到Ehcache,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Java多線程并發(fā)FutureTask使用詳解

    Java多線程并發(fā)FutureTask使用詳解

    Java?的多線程機(jī)制本質(zhì)上能夠完成兩件事情,異步計(jì)算和并發(fā),F(xiàn)utureTask?是基于?Runnable?實(shí)現(xiàn)的一個(gè)可取消的異步調(diào)用?API,本文給大家介紹Java?多線程并發(fā)FutureTask及基本使用,需要的朋友可以參考下
    2022-06-06
  • Spring?Cloud?Ribbon?中的?7?種負(fù)載均衡策略的實(shí)現(xiàn)方法

    Spring?Cloud?Ribbon?中的?7?種負(fù)載均衡策略的實(shí)現(xiàn)方法

    Ribbon?內(nèi)置了?7?種負(fù)載均衡策略:輪詢策略、權(quán)重策略、隨機(jī)策略、最小連接數(shù)策略、重試策略、可用性敏感策略、區(qū)域性敏感策略,并且用戶可以通過(guò)繼承?RoundRibbonRule?來(lái)實(shí)現(xiàn)自定義負(fù)載均衡策略,對(duì)Spring?Cloud?Ribbon負(fù)載均衡策略相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-03-03
  • Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法

    Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法

    這篇文章主要介紹了Spring?MVC基于注解的使用JSON數(shù)據(jù)處理,json是一種輕量級(jí)的數(shù)據(jù)交換格式,是一種理想的數(shù)據(jù)交互語(yǔ)言,它易于閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • SpringBoot?Test的webEnvironment源碼解讀

    SpringBoot?Test的webEnvironment源碼解讀

    這篇文章主要為大家介紹了SpringBoot?Test的webEnvironment源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Mybatis Plus 字段為空值時(shí)執(zhí)行更新方法未更新解決方案

    Mybatis Plus 字段為空值時(shí)執(zhí)行更新方法未更新解決方案

    這篇文章主要介紹了Mybatis Plus 字段為空值時(shí)執(zhí)行更新方法未更新解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論