Чтение значений из файла свойств во время выполнения

#spring #properties

#spring #свойства

Вопрос:

Я хочу получить конкретное значение на основе запроса из файла свойств.как это сделать?

У меня следующая конфигурация spring.я хочу установить значение для Exprops в соответствии с запросом и получить соответствующие значения из файла свойств

 <bean id="Prop" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:ErrorMessage.properties</value>
    </property>
</bean>

<bean id="PropertiesBean" class="com.util.PropertiesUtil">
    <property name="Exprops" value="${EXampleExceptiion}"></property>
</bean>
  

Комментарии:

1. PropertyPlaceholderConfigurer предназначен только для настройки вашего приложения, каким-то образом статичный, он не предназначен для вызова вашим приложением.

2. Я думаю, вам придется реализовать это самостоятельно. Насколько я знаю, у Spring нет конкретной поддержки для этого.

3. спасибо @ Ralph, @Benjamin .. может ли кто-нибудь предоставить мне реализацию, в которой файл, считанный из PropertyPlaceholderConfigurer, можно использовать для установки значения во время выполнения

Ответ №1:

Используйте PropertiesFactoryBean для ввода свойств в компонент.

 <bean id="myPropertiesBean"
  class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="location" value="classpath:ErrorMessage.properties"/>
</bean>
  

Это предоставляет объект / компонент с свойствами, который может быть введен под именем myPropertiesBean в любой компонент ( <property name="x" ref="myPropertiesBean"/> ).

Кроме того, Spring предоставляет пространство имен util (начиная с Spring 2.5): там вы можете написать определение PropertyFactoryBean немного короче:

 <util:properties id="myPropertiesBean"
 location="classpath:ErrorMessage.properties"/>
  

@см. Справочную главу по Spring C.2.2.3.

Комментарии:

1. Спасибо@Ralph, это выглядит лучше

2. Можем ли мы записать несколько свойств в один и тот же PropertiesFactoryBean, который будет использоваться разными компонентами Spring

3. @Виш: PropertiesFactoryBean предоставляет java.util. Свойства — это несколько свойств! (или вы имели в виду несколько файлов свойств). И да, вы можете использовать их в разных компонентах (каждый получит свой экземпляр java.util. Свойства, но с тем же ключом / значениями)

4. Автоматическое подключение это не разрешает значения, если ваши значения являются другими переменными.

Ответ №2:

Все используют следующее для выполнения этого программно

 XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
cfg.setLocation(new FileSystemResource("jdbc.properties"));
cfg.postProcessBeanFactory(factory);
  

Ответ №3:

 <util:properties id="" location="location of prop file" />
  

это возвращает java.util.Свойства объекта