Как переключиться с ResourceBundle на свойства (класс)?
У меня есть приложение, разделенное на 2 проекта Java (ядро и сеть). Служба Java в основном модуле должна считывать значения из файла .properties, расположенного в веб-модуле. Когда я использую ResourceBundle, он работает так, как ожидалось.
Я хотел переключиться на класс Properties по нескольким причинам (особенно потому, что ResourceBundle кэшируется, и я не хочу реализовывать ResourceBundle.Control без кеша). К сожалению, я не могу заставить его работать, особенно потому, что не могу выяснить, какой правильный относительный путь использовать.
Я прочитал декомпилированный класс ResourceBundle (и др.) и заметил использование getResource() в некотором ClassLoader. Поэтому вместо прямого использования 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