最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot讀取外部配置文件,項(xiàng)目部署時配置讀取不到問題及解決

 更新時間:2024年06月11日 15:22:36   作者:藍(lán)天白云下遛狗  
這篇文章主要介紹了Springboot讀取外部配置文件,項(xiàng)目部署時配置讀取不到問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

需求

最近項(xiàng)目部署,但是每個地方都有個別地方配置的差異,我們每次打包后再進(jìn)行修改極度不方便,這里將有關(guān)的配置都抽取出來,放在jar包外進(jìn)行配置,這樣以后更新時只需要將jar包更換然后重啟即可,配置讀取外部的固定配置文件。

SpringBoot 配置

springboot默認(rèn)配置的加載位置和優(yōu)先級順序

springboot啟動時會掃描以下位置的application.properties和application.yml文件作為默認(rèn)的配置文件。

  • file: ./config/
  • file: ./
  • classpath: /config/
  • classpath: /

所有的配置文件都會被加載,但高優(yōu)先級的配置會覆蓋低優(yōu)先的配置,上面的優(yōu)先級為由高到低排列,./config/ 的優(yōu)先級最高,我們創(chuàng)建項(xiàng)目時默認(rèn)的放在resources目錄下的優(yōu)先級是最低的。

classpath可以理解為我們項(xiàng)目內(nèi)部的沒打包時的resources文件夾下的,file理解為和jar包同級的目錄(如果在linux中啟動項(xiàng)目時寫的啟動路徑的相對位置和file的文件不是同級時外部配置文件會出現(xiàn)讀取失敗,可以翻到文章最下面)。

配置文件中帶spring.profile的文件會優(yōu)先被加載

啟動項(xiàng)目時指定配置文件的位置

java -jar xxxx.jar -Dspring.config.location=/home/test/application.yml

啟動時加載/home/test文件夾下的application.yml作為配置文件。

這里還可以指定端口、生效的配置文件、日志打印等

java -jar xxxx.jar -Dspring.profiles.active=prod -Dspring.config.location=/home/test/application.yml
-Dserver.port=8081  > logs/xxxlog.log 2>&1 &

application配置

  • 非默認(rèn)配置文件,這里我是config.properties

可以通過注解_@PropertySource_ 來指定配置文件的位置,value中提供兩種方式 classpath 和 file

@Configuration
@ConfigurationProperties(prefix = "config", ignoreUnknownFields = false)
@PropertySource(name = "config.properties"
        ,value = {"classpath:/config.properties","file:./config/config.properties"}
        ,ignoreResourceNotFound = true
        ,encoding = "UTF-8")

value是一個數(shù)組,可以放多個配置文件,從左到右進(jìn)行加載,后面的會覆蓋掉前面的配置,ignoreResourceNotFound = true主要用來忽略文件不存在的情況,如果第一個目錄下沒有找到對應(yīng)的文件內(nèi)容,就向后繼續(xù)找不加這個配置第一個文件找不到時會報(bào)錯。

ConfigurationProperties 是用來減少下面@Value注解的參數(shù),如果不加這個注解,配置項(xiàng)中配置的是 config.username = 'liuch’
這時你的@Value(“config.maintType" ) 需要寫完整,如果配置了以后 @Value("{config.maintType}")需要寫完整,如果配置了以后@Value("config.maintType")需要寫完整,如果配置了以后@Value("{maintType}”)即可。

部署時配置讀取失敗

注意: 在linux啟動項(xiàng)目時,config文件夾要和啟動根目錄的相對路徑是同一級,否則讀取不到配置,需要在啟動項(xiàng)目時指定配置文件位置。

例:

現(xiàn)在jar和config放在 /home/liuch/app/ 文件夾下,我們啟動時需要先進(jìn)入到 /home/liuch/app 目錄,然后再
nohup java -jar xxx.jar >/dev/null 2>&1 &,直接使用命令nohup java -jar /home/liuch/app/xxx.jar >/dev/null 2>&1 & 啟動時不會去讀取config文件夾下的配置文件,需要使用-Dspring.config.location= 指定配置文件位置,此時我們的非默認(rèn)配置文件是讀取不到的,我們可以在application.yml文件中配置需要加載的非默認(rèn)配置文件位置

server:
  port: 8088
config:
  path: /home/liuch/config.properties
@PropertySource(value = {"file:${config.path}"}, encoding="utf-8")

下面的@Value的用法和之前一樣。

附:

springboot項(xiàng)目啟動時的參數(shù)

/usr/local/java/jdk1.8.0_131/bin/java -jar -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/spb_zcmweb/8103/dump/heap/
 -Djava.io.tmpdir=/data/liuch/tmp/ 
 -Dserver.port=8103 
 -Dcom.sun.management.jmxremote
 -Dcom.sun.management.jmxremote.port=5103 
 -Dcom.sun.management.jmxremote.rmi.port=6103 
 -Dcom.sun.management.jmxremote.authenticate=false 
 -Dcom.sun.management.jmxremote.ssl=false 
 -Dcom.sun.management.jmxremote.access.file=/usr/local/java/jdk1.8.0_131/jre/lib/management/jmxremote.access 
 -Xmx2G -Xms2G -XX:+DisableExplicitGC -verbose:gc -Xloggc:/data/liuch/log/gc.%t.log -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCTaskTimeStamps -XX:+PrintGCDetails -XX:+PrintGCDateStamps 
 -Dserver.connection-timeout=60000 
 -Dserver.tomcat.accept-count=1000 
 -Dserver.tomcat.max-threads=300 
 -Dserver.tomcat.min-spare-threads=65 
 -Dserver.tomcat.accesslog.enabled=false 
 -Dserver.tomcat.accesslog.directory=/data/liuch/log/ 
 -Dserver.tomcat.accesslog.prefix=access_log 
 -Dserver.tomcat.accesslog.pattern=combine 
 -Dserver.tomcat.accesslog.suffix=.log 
 -Dserver.tomcat.accesslog.rotate=true 
 -Dserver.tomcat.accesslog.rename-on-rotate=true 
 -Dserver.tomcat.accesslog.request-attributes-enabled=true 
 -Dserver.tomcat.accesslog.buffered=true 
 -XX:NewRatio=4 -XX:SurvivorRatio=30 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=8 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:ParallelGCThreads=24 -XX:ConcGCThreads=24 -XX:-UseGCOverheadLimit -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=1 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+ParallelRefProcEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=6000 -XX:CompileThreshold=10 -XX:MaxInlineSize=1024 -Dsun.net.client.defaultConnectTimeout=60000 
 -Dsun.net.client.defaultReadTimeout=60000 
 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 
 -Djsse.enableCBCProtection=false 
 -Djava.security.egd=file:/dev/./urandom 
 -Dfile.encoding=UTF-8 
 -Dlog.path=/data/liuch/log/ 
 -Dspring.profiles.active=online  
 /data/liuch/deploy/xxxx.jar zcmweb 

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • @ConfigurationProperties注解原理與實(shí)踐方式

    @ConfigurationProperties注解原理與實(shí)踐方式

    這段文章詳細(xì)介紹了@ConfigurationProperties在SpringBoot中的使用方法,并探討了其源碼實(shí)現(xiàn)原理,進(jìn)而引導(dǎo)讀者自己實(shí)現(xiàn)類似功能,涵蓋配置文件解析、Bean生命周期管理等內(nèi)容,同時強(qiáng)調(diào)了通過學(xué)習(xí)SpringBoot源碼來實(shí)現(xiàn)自定義功能的重要性
    2026-06-06
  • SSM項(xiàng)目使用攔截器實(shí)現(xiàn)登錄驗(yàn)證功能

    SSM項(xiàng)目使用攔截器實(shí)現(xiàn)登錄驗(yàn)證功能

    這篇文章主要介紹了在SSM項(xiàng)目中如何使用攔截器,實(shí)現(xiàn)登錄驗(yàn)證功能。文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-01-01
  • Mybatis配置解析看這一篇就夠了

    Mybatis配置解析看這一篇就夠了

    這篇文章主要介紹了詳解Mybatis是如何解析配置文件的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 自己寫的簡易版Java日志類分享

    自己寫的簡易版Java日志類分享

    這篇文章主要介紹了自己寫的簡易版Java日志類分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06
  • Java Character類的應(yīng)用場景

    Java Character類的應(yīng)用場景

    Java中的Character類提供了處理單個字符的靜態(tài)方法和實(shí)例方法,包括大小寫轉(zhuǎn)換、比較、分類等,它在處理用戶輸入、排序、查找和文本分類等場景中非常有用,下面就來詳細(xì)的介紹一下如何應(yīng)用,感興趣的可以了解一下
    2026-01-01
  • Spring實(shí)戰(zhàn)之XML與JavaConfig的混合配置詳解

    Spring實(shí)戰(zhàn)之XML與JavaConfig的混合配置詳解

    大家都知道Spring的顯示配置方式有兩種,一種是基于XML配置,一種是基于JavaConfig的方式配置。那么下這篇文章主要給大家分別介紹如何在JavaConfig中引用XML配置的bean以及如何在XML配置中引用JavaConfig,需要的朋友可以參考下。
    2017-07-07
  • springboot整合JSR303校驗(yàn)功能實(shí)現(xiàn)代碼

    springboot整合JSR303校驗(yàn)功能實(shí)現(xiàn)代碼

    這篇文章主要介紹了springboot整合JSR303校驗(yàn)功能實(shí)現(xiàn),JSR303校驗(yàn)方法有統(tǒng)一校驗(yàn)的需求,統(tǒng)一校驗(yàn)實(shí)現(xiàn)以及分組校驗(yàn),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • SpringBean實(shí)例化的基本流程源碼剖析

    SpringBean實(shí)例化的基本流程源碼剖析

    Spring容器通過BeanDefinition對象和singletonObjects Map集合管理Bean實(shí)例化過程,實(shí)現(xiàn)依賴注入和控制反轉(zhuǎn),本文給大家介紹SpringBean實(shí)例化的基本流程源碼剖析,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • 淺談一下數(shù)據(jù)庫連接池Druid德魯伊

    淺談一下數(shù)據(jù)庫連接池Druid德魯伊

    數(shù)據(jù)庫連接池就是一個容器持有多個數(shù)據(jù)庫連接,當(dāng)程序需要操作數(shù)據(jù)庫的時候直接從池中取出連接,使用完之后再還回去,和線程池一個道理,需要的朋友可以參考下
    2023-05-05
  • 關(guān)于springboot 配置date字段返回時間戳的問題

    關(guān)于springboot 配置date字段返回時間戳的問題

    這篇文章主要介紹了springboot 配置date字段返回時間戳的問題,在springboot2.0后,spring會將Date字段自動給轉(zhuǎn)成UTC字符串了(在沒有配置的情況下),所以date需要轉(zhuǎn)換成時間戳還是yyyy-MM-dd HH:mm:ss,具體解決方法跟隨小編一起看看吧
    2021-07-07

最新評論

嘉定区| 米易县| 大安市| 定州市| 儋州市| 丁青县| 桦南县| 汕尾市| 图片| 平阳县| 博罗县| 平乡县| 许昌市| 海丰县| 项城市| 阜南县| 奉新县| 金山区| 纳雍县| 鹤峰县| 东山县| 民和| 罗江县| 平度市| 塘沽区| 简阳市| 洛宁县| 宜良县| 辽中县| 江门市| 陵川县| 全椒县| 盐亭县| 略阳县| 循化| 晋州市| 千阳县| 烟台市| 电白县| 张家界市| 沽源县|