Я все еще не понимаю вопроса, но я предполагаю, что вы хотите установить свойства bean-компонента из файла свойств.
В других ответах показано, как получить объект Properties из файла .properties (я покажу дополнительные способы ниже), я покажу вам, как связать свойства из него с использованием интерфейса BeanWrapper
Spring:
public static void wireBeanFromProperties(Object bean, Properties props){
BeanWrapper wrapper = new BeanWrapperImpl(bean);
for(Entry<Object, Object> entry:props.entrySet()){
String propertyName = entry.getKey().toString();
if(wrapper.isWritableProperty(propertyName)){
wrapper.setPropertyValue(propertyName, entry.getValue());
}
}
}
Или, если вы точно знаете, что все свойства из файла свойств могут быть сопоставлены со свойствами этого компонента класса:
public static void wireBeanFromProperties(final Object bean,
final Properties props){
final BeanWrapper wrapper = new BeanWrapperImpl(bean);
// will throw an exception if the Properties object
// contains any unknown keys
wrapper.setPropertyValues(props);
}
Ссылка: 5.4. Бобовые манипуляции и BeanWrapper
На самом деле, специфичные для Spring способы загрузки ресурсов из пути к классам используют механизм Resource
InputStream str = new ClassPathResource("classpath:some.properties")
.getInputStream();
Приятной особенностью является то, что вы можете легко соединить InputStreams и Resources из XML, используя синтаксис classpath:
:
Java-код
private InputStream stream;
private Resource resource;
public void setStream(InputStream stream){
this.stream = stream;
}
public void setResource(Resource resource){
this.resource = resource;
}
свойство проводки:
<bean class="MyClass">
<property name="stream" value="classpath:file1.properties" />
<property name="resource" value="classpath:file2.properties" />
</bean>
Если вы просто хотите инициализировать статическое конечное поле, вот как это сделать:
private static final String DOMAIN;
static{
InputStream inputStream=null;
try{
inputStream = new ClassPathResource("classpath:some.properties")
.getInputStream();
Properties props = new Properties();
props.load(inputStream);
String key = "your.property";
if(!props.containsKey(key))
throw new IllegalStateException("Property not found");
DOMAIN= props.getProperty(key);
} catch(IOException e){
throw new IllegalStateException(e);
}finally{
// apache commons / IO
IOUtils.closeQuietly(inputStream);
}
}