2017-04-24 599 views
0

我正在轉換項目的工作從春天應用與最小的變化春啓動(1.52)應用傳統的bean的配置XML文件)在應用程序引導文件中,啓用了log4J2日誌記錄,並使用Jersey而不是RestEasy來公開REST端點,一切正常。但是,我在與Jenkins部署時遇到了一個問題。在傳統的應用程序的bean.xml文件有背景:物業佔位符樣加載application.properties由使用可變文件路徑

<context:property-placeholder location="${apps.config.dir:classpath:conf}/myapp.properties" /> 

在tomcat環境配置文件變量,我們已經與

-Dapps.config.dir=file:/etc/my-app 

這是工作文件替換。但在春季啓動應用程序,我已經tried-

<context:property-placeholder location="${spring.config.location:classpath:}application.properties"/> 

我已經改名爲application.properties所以春天開機自動選擇配置文件,也改變了位置。上述位置在IDE中沒有classpath關鍵字的情況下也可以工作。傳統spring應用程序的一個顯着變化是額外的「:」,沒有它,IDE無法從bean.xml文件加載配置文件。在myapp.conf文件我已經通過了以下Java選項 -Dapps.config.dir=file:/etc/my-app/這與以下錯誤消息(這次我沒地方/前application.properties文件名和放置額外的失敗放在/爲Java選項,我也曾嘗試相反的一個,但產生相同的結果)

2017-04-24-10:51:26:803|main|ERROR|SpringApplication|Application startup failed application.properties (No such file or directory)onException: Could not load properties; nested exception is java.io.FileNotFoundException: /etc/my-app/ 

我在Jenkins構建過程中也不包括application.properties文件。

但是,如果我手動更改文件,而不是類路徑和不通過一個適用於任何java的選擇,但我還沒有放置在數據文件夾在我的IDE失敗 -

<context:property-placeholder location="${spring.config.location:file:}application.properties"/> 

此配置不因爲其他開發人員需要更改以在其IDE中運行它。我想讓它變得靈活,以便IDE和Jenkins可以像目前一樣無縫地工作,我們有Spring應用程序。我需要幫助來重新配置bean.xml變量路徑來加載application.properties文件。謝謝。

回答

0

我建議你用SpringApplication.setDefaultProperties指定默認屬性,這些屬性應該是確定的IDE/DEV ENV。當其他地方運行。如果你仍然需要在XML屬性解析器試圖忽略查找失敗這樣你可以指定與-Dspring.config.location=/etc/my-app/my-conf.properties

一個覆蓋: <context:property-placeholder location="${spring.config.location}" ignore-resource-not-found="true"/>

對於春季啓動物業承載基準看到this part of the doc.

+0

Hi @Pär感謝您的回覆。我已經使用以下xml屬性解析器作爲變通方法<上下文:屬性佔位符位置=「application.properties,文件:application.properties中」忽略資源未找到=「真」忽略-不可解析=「真」 /> – Nazrul

+0

@Nazrul請注意,'@ PropertySource'在物業裝載具有優先權16和'application.properties'優先15.這意味着你不能在'application.properties'以'@ PropertySource'覆蓋性能 –