日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

War包与配置文件分离

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 War包与配置文件分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

背景

WAR包和配置文件分離,這應該是個老生常談的問題了。一直沒怎么深入研究。今天抽空看了下Spring Resource相關的介紹和代碼。然后得出一個結論:這事很簡單。

一般解決方法

一般我們都會使用properties文件,然后在xml中引用properties文件。一般用法如下:

<context:property-placeholder location="classpath:jdbc.properties"/>

就是這樣,加載classpath下面的文件,很常見。 然后為了解決不同環境,配置不同的問題引入了profile的概念。Spring自身提供了Profile功能,Maven也提供了Profile功能。

二般解決方案

一般解決方案的原則就是:提前做好準備。給誰用,打誰的包。
但是,你懂的。天有不測風云,人有毫無準備。能支持臨時改配置的包才是好包。
那怎么辦?看這里:

<context:property-placeholder ignore-resource-not-found="true" location="classpath:jdbc.properties,/jdbc.properties,file:#{systemProperties['catalina.home']}/conf/appX.properties,file:/usr/local/appConfig/appX.properties"/>

配置解析如下:

  • ignore-resource-not-found="true" 這個配置,意思是找不到文件也不報錯。只會在日志中輸出一句warning。
  • classpath:jdbc.properties 都懂,不用說
  • /jdbc.properties 由于是WEB工程,這里就指的是ServletContext.getRealPath("/jdbc.properties")這個文件。場景:有些時候我們把jdbc.properties打包到了jar中,沒法改。于是我們在web根目錄下放一個jdbc.properties,這個文件會覆蓋jar中的jdbc.properties配置。這樣操作,其實還是對war有侵入的,畢竟要先解壓才能放,并且重新部署很容易誤刪該文件。
  • file:#{systemProperties['catalina.home']}/conf/appX.properties 指的是tomcat/conf/appX.properties這個文件。好了,這次是在war外面,并且是一個相對于tomcat根目錄的相對路徑。只要tomcat不動,重新發布更換WAR包,毫無影響。
  • file:/usr/local/appConfig/appX.properties 這個操作更絕了。可能你部署了多個應用,想把所有程序的配置統一放置到/usr/local/appConfig目錄中。這樣不管更換tomcat還是更換war都毫無影響。
  • 以上配置順序很重要。按照Spring的流程,后面文件中的配置項,會覆蓋掉前面文件中的。如果后面的文件不存在,不影響大局,只要列表中任意一個存在就行。

是不是有點像Spring Boot的套路。配置文件的加載遵循一個既定的順序,每個環節有不同的優先級。

轉載于:https://my.oschina.net/huanger/blog/1830579

總結

以上是生活随笔為你收集整理的War包与配置文件分离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。