spring使用外部属性文件

本文介绍Spring中PropertyPlaceholderConfigurer的使用,通过将bean配置的部分内容移至属性文件,使用${var}

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

在bean配置资源或系统部署,如数据库的连接时,需要这样:

要包含相关jar包:c3p0.jar 和mysql.connector.jar
xml配置:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="user" value="root"></property>
    <property name="password" value="1234"></property>
    <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    <property name="jdbcUrl" value="jdbc:mysql:///test"></property>

</bean>

main函数调用:

ApplicationContext ctx=new ClassPathXmlApplicationContext("properties.xml");
			DataSource datasource = (DataSource)ctx.getBean("dataSource");
			System.out.println(datasource.getConnection()); 
			

如果数据库有更改,在配置里改一下相关信息就可以。但是,实际项目中并不这样,因为实际中没有这么简单的配置,包含了大量的信息。

通过把配置信息独立到一个文件里面,bean用${}方式引用, 便于维护、更清晰。所以,上面xml配置可以改成这样:新建一个文件专门存放可能需要修改的配置: db.properties

user=root
password=1234
driverclass=com.mysql.jdbc.Driver
jdbcurl=jdbc.mysql:///test

在配置xml文件中,添加context命名空间,用来引入文件

<!--导入属性文件-->
<context:property-placeholder location="classpath:db.properties"/>

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <!-- 使用外部化属性文件的属性 -->
     <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>

这样,要修改数据库信息,只需要在db.properties文件中修改即可。不必去复杂的xml中去找。提高了维护的效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值