如何從ResourceBundle切換到屬性(類)?如何從ResourceBundle切換到屬性(類)?
我有一個應用程序分裂成2個Java項目(核心&網絡)。核心模塊中的Java服務必須從位於Web模塊中的.properties文件中讀取值。 當我使用ResourceBundle時,它按預期工作。
我想切換到Properties類有幾個原因(特別是因爲ResourceBundle被緩存,我不想實現ResourceBundle.Control沒有緩存)。 不幸的是我不能讓它工作,特別是因爲我無法找出使用哪個正確的相對路徑。
我讀了反編譯的ResourceBundle類(等),並注意到某些ClassLoader上使用了getResource()。 因此,不是直接使用FileInputStream,而是使用getResource()或簡單的getResourceAsStream()對ServiceImpl.class或ResourceBundle.class進行測試,但仍然沒有成功...
任何人有想法如何獲得此工作?謝謝!
這是我與服務應用的核心獲得的屬性值:
app-core
src/main/java
com.my.company.impl.ServiceImpl
public void someRun() {
String myProperty = null;
myProperty = getPropertyRB("foo.bar.key"); // I get what I want
myProperty = getPropertyP("foo.bar.key"); // not here...
}
private String getPropertyRB(String key) {
ResourceBundle bundle = ResourceBundle.getBundle("properties/app-info");
String property = null;
try {
property = bundle.getString(key);
} catch (MissingResourceException mre) {
// ...
}
return property;
}
private String getPropertyP(String key) {
Properties properties = new Properties();
InputStream inputStream = new FileInputStream("properties/app-info.properties"); // Seems like the path isn't the good one
properties.load(inputStream);
// ... didn't include all the try/catch stuff
return properties.getProperty(key);
}
這是網絡模塊,其中駐留的屬性文件:
app-web
src/main/resources
/properties
app-info.properties
相關:http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#2308388 – BalusC