#java #xml #spring #javabeans
#java #xml #весна #javabeans
Вопрос:
В чем разница между использованием PropertyOverrideConfigurer
и PropertyPlaceholderConfigurer
в Spring framework? Я не могу найти какой-либо существенной разницы между этими 2 классами.
Комментарии:
1. это идеальный вопрос для [поисковой системы по вашему выбору], но совершенно не по теме для SO.
2. Франц Глейхманн почему это не по теме???
3. Хотя я не согласен с тем, что это оффтопик, у него есть точка зрения, что поиск в Google «PropertyOverrideConfigurer PropertyPlaceholderConfigurer» приводит к документам API
PropertyOverrideConfigurer
, и в нем содержится абзац о разнице между этими двумя.4. Спасибо @g00glen00b за подсказки.
Ответ №1:
Propertyoverridконфигуратор :
«Конфигуратор ресурсов свойств, который переопределяет значения свойств компонента в определении контекста приложения. Он помещает значения из файла свойств в определения компонентов «.
это позволяет вам переопределять некоторые значения, которые принимают компоненты, означает, что вы можете переопределить некоторые значения spring beans из свойств, определенных в файле свойств
объявить:
<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="location" value="classpath:myproperties.properties" />
</bean>
<bean id="person" class="com.sample.Employee" >
<property name="name" value="Dugan"/>
<property name="age" value="50"/>
</bean>
myproperties.properties:
person.age=40
person.name=Stanis
итак, когда вы загружаете компонент
Employee e = (Employee)context.getBean(Employee.class);
e.getAge() => 40
e.getName() => "Stanis"
PropertyPlaceholderConfigurer :
разрешает заполнители ${…} в отношении локальных свойств и / или системных свойств и переменных среды.
это позволяет вам разрешать заполнители ${..} в определениях компонентов, а также проверяет системные свойства для значений. Этим поведением можно управлять с помощью systemPropertiesMode
- никогда (0): никогда не проверяйте системные свойства
- запасной вариант (1): проверьте свойства системы, если они не разрешимы в указанных файлах свойств. Это значение по умолчанию.
- переопределение (2): сначала проверьте свойства системы, прежде чем пытаться использовать указанные файлы свойств. Это позволяет системным свойствам переопределять любой другой источник свойств.
для настройки
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb" />
<property name="username" value="root" />
<property name="password" value="password" />
<property name="systemPropertiesMode" value="0" />
</bean>
переместите свойства источника данных в файлы свойств
database.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=root
jdbc.password=password
затем укажите их с помощью заполнителей =>
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>database.properties</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>