Bean使用外部属性

使用外部属性

  • 在配置文件里配置Bean时,有时需要在Bean的配置里混入系统部署的细节信息(例如:文件路径,数据源配置信息等)。而这些部署细节实际上需要和Bean部署相分离
  • Spring提供一个PropertyPlaceholderConfigurer的BeanFactory后置处理器,这个处理器允许用户将Bean配置的部分内容外移到属性文件中,可以在Bean配置文件里使用形式为${var}的变量,PropertyPlaceholderConfigurer从属性文件里加载属性,并使用这些属性来替换变量。
  • Spring还允许在属性文件中使用${propName},以实现属性之间的相互引用。

注册PropertyPlaceholderConfigurer

  • spring2.0

    1
    2
    3
    <bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name = "Location" value = "classpath:jdbc.properties"></property>
    </bean>
  • Spring2.5之后:可通过<context:property-placeholder>元素简化:

    • <beans>中添加context Schema定义
    • 在配置文件中加入如下配置:
      1
      <context:property-placeholder location= "classpath:db.properties"/>

db.properties

1
2
3
4
user=root
password=1230
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql:///test

bean.xml

1
2
3
4
5
6
7
8
9
10
<!-- 导入属性文件 -->
<context:property-placeholder location= "classpath:db.properties"/>

<!-- 使用外部化属性文件的属性 -->
<bean id = "dataSource" class = "com.mchange.v2.c3p0.ComboPoolLedDataSource">
<property name = "user" value = "${user}"></property>
<property name = "password" value = "${password}"></property>
<property name = "driverClass" value = "${driverClass}"></property>
<property name = "jdbcUrl" value = "${jdbcUrl"></property>
</bean>

输出结果:
连接成功

-------------本文结束 感谢您的阅读-------------
文章对我有益,我要小额赞赏...