在Spring框架中使用PropertyOverrideConfigurer
和PropertyPlaceholderConfigurer
之间有什么区别?我无法在这两个类之间找到任何明显的区别。
答案 0 :(得分:6)
PropertyOverrideConfigurer:
"覆盖bean属性值的属性资源配置器 应用程序上下文定义。它从属性中推送值 将文件放入bean定义中。"
它允许你覆盖bean所采用的一些值,这意味着你可以从属性文件中定义的属性覆盖一些spring bean的值
声明:
<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
所以加载bean时
Employee e = (Employee)context.getBean(Employee.class);
e.getAge() => 40
e.getName() => "Stanis"
PropertyPlaceholderConfigurer :
针对本地属性和/或系统解析$ {...}占位符 属性和环境变量。
它允许您解析bean定义中的$ {..}占位符,它还会检查值的系统属性。可以使用systemPropertiesMode
控制此行为配置
<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>
移动&#39; dataSource&#39;属性文件的属性
<强> 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>
然后用占位符引用它们=&gt;
<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>