区别描述
-
PropertyPlaceholderConfigurer- 功能 : 解析和处理
bean定义中属性值,构造函数参数值,和@Value注解中的占位符${...} - 属性源 : 所设置的
Properties属性对象,属性文件,系统属性(system properties),环境变量(environment variables) - 工作模式 : “拉”,遍历每个
bean定义中的属性占位符,从属性源中拉取对应的属性值替换属性占位符
从
Spring 3.1开始,推荐使用PropertySourcesPlaceholderConfigurer而不是PropertyPlaceholderConfigurer。 - 功能 : 解析和处理
-
PropertyOverrideConfigurer- 功能 : 基于属性文件定义的
bean属性值设置指令执行相应的bean属性值设置 - 属性源 : 指定路径的属性文件
- 工作模式: “推”,根据属性文件中的
bean属性设置指令将属性值推送设置到相应的bean属性
- 功能 : 基于属性文件定义的
例子演示
1. PropertyPlaceholderConfigurer例子
- 提供一个配置文件,比如为
database.properties:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=root
jdbc.password=password
- 定义
bean PropertyPlaceholderConfigurer如下 :
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>database.properties</value>
</property>
</bean>
- 然后定义
bean dataSource如下 :
<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>
经过上面三个步骤,bean dataSource定义效果同下 :
<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>
2. PropertyOverrideConfigurer例子
- 提供一个配置文件,比如为
myproperties.properties:
person.age=40
person.name=Stanis
- 定义
bean PropertyOverrideConfigurer如下 :
<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="location" value="classpath:myproperties.properties" />
</bean>
- 然后定义
bean person如下 :
<bean id="person" class="com.sample.Employee" >
<property name="name" value="Dugan"/>
<property name="age" value="50"/>
</bean>
经过上述三个步骤,当我们在程序中访问bean person的属性时会有如下结果 :
Employee e = (Employee)context.getBean(Employee.class);
e.getAge() // 这里会对应属性文件 myproperties.properties 中的属性值 40
e.getName() // => 这里会对应属性文件 myproperties.properties 中的属性值 "Stanis"
博客介绍了两种属性配置工具的区别,包括功能、属性源和工作模式。一种是解析处理占位符,属性源多样,工作模式为“拉”;另一种基于属性文件设置属性值,属性源为指定路径文件,工作模式为“推”,还给出了相应例子演示。
721

被折叠的 条评论
为什么被折叠?



