gpt4 book ai didi

java - PropertyOverrideConfigurer 和 PropertyPlaceholderConfigurer 有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:47 25 4
gpt4 key购买 nike

在Spring框架中使用PropertyOverrideConfigurerPropertyPlaceholderConfigurer有什么区别?我找不到这两个类之间的任何明显区别。

最佳答案

PropertyOverrideConfigurer :

"Property resource configurer that overrides bean property values in an application context definition. It pushes values from a properties file into bean definitions."

它允许您覆盖 beans 的一些值,这意味着您可以从属性文件中定义的属性覆盖 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>

我的属性.properties:

person.age=40
person.name=Stanis

所以当你加载bean时

Employee e  = (Employee)context.getBean(Employee.class);

e.getAge() => 40
e.getName() => "Stanis"

PropertyPlaceholderConfigurer:

resolves ${...} placeholders against local properties and/or system properties and environment variables.

它允许您解析 bean 定义中的 ${..} 占位符,它还检查系统属性的值。可以使用 systemPropertiesMode 控制此行为

  • never (0):从不检查系统属性
  • 回退 (1):如果在指定的属性文件。这是默认值。
  • 覆盖 (2):首先检查系统属性,然后再尝试指定的属性文件。这允许系统属性覆盖任何其他属性(property)来源。

配置

<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>

将“dataSource”属性移动到属性文件

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>

关于java - PropertyOverrideConfigurer 和 PropertyPlaceholderConfigurer 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40079929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com