2013-07-03 91 views
1

我的問題是這個問題的一個完全相同的副本: Spring application context external properties?如何注入的外部屬性在Spring上下文文件

這是我如何注入道具之前文件:

<util:properties id="smrProps" location="classpath:/spring/SomeProps.properties" /> 

但對於生活我不知道在location中使用什麼時,我想注入一個屬性文件,它將與可運行的jar文件位於同一個目錄中。我知道classpath指向的地方,我的道具只有一層,所以我甚至試着假設classpath:/../SomeProps.properties會在父文件夾中查找,但沒有運氣。

對於離如果罐子是:C:\temp\some.jar和屬性文件是C:\temp\SomeProps.properties

如果some.jar是在溫度,然後SomeProps.properties也將在溫度。當然,我不能在位置使用C:\ temp \ SomeProps.properties

有人能指導我如何使用這個道具文件嗎?

+0

如果您在使用Spring啓動時,您可以校驗H TTP://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html – shobull

回答

0

我不認爲有可能使用相對路徑訪問.jar以外的東西util:properties

但是,如果可以的話,您應該可以通過使用系統屬性來完成。

此外,你應該使用file:而不是classpath:。事情是這樣的:

<util:properties id="smrProps" location="file:{my.path}/SomeProps.properties" /> 

然後用像這樣執行的.jar:

java -Dmy.path=/YourFolderPath -jar application.jar 

的其他解決辦法是延長PropertyPlaceholderConfigurer然後拿到.jar的路徑與Java。看看這個問題:Loading Properties with Spring (via System Properties)

0

另一個解決辦法是找出運行罐子

return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 

用它找到你的道具文件中的父文件夾,並用它注入方面SPEL

的路徑

下面是它的外觀(您可能希望把它打掃乾淨了一點,但我能模仿你的情況,並證實了這一解決方案):

<util:properties id="smrProps" location="'file:' + new java.io.File(T(com.yourpackage.YourClass).getProtectionDomain().getCodeSource().getLocation().getPath()).getParent() + '/'+ settings.prop'" /> 
相關問題