#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"/>
Комментарии:
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.Свойства объекта