转载自:http://blog.csdn.net/hu_shengyang/article/details/7900435
在spring配置数据源的时候,我们经常需要读取*.propretie文件中的信息,然后在spring的数据元配置文件中以占位符的方式来引入数据源配置属性的值。
如果需要在spring的配置中以占位符方式来配置,请参考以下三种方式:
(1)<!-- 获取properties数据源文件 方式一 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/ssh-config/spring_2.5.5/c3p0.properties</value>
</list>
</property>
</bean>
(2)<!-- 获取properties数据源文件 方式二 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" >
<value>classpath:/ssh-config/spring_2.5.5/c3p0.properties</value>
</property>
</bean>
(3)<!-- 获取properties数据源文件 方式三 -->
<context:property-placeholder location="classpath:/ssh-config/spring_2.5.5/c3p0.properties"/>
<!--例如: -->
<!-- 读取配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"/>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass">
<value>${jdbc_driver}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc_url}</value>
</property>
<property name="user">
<value>${jdbc_user}</value>
</property>
<property name="password">
<value>${jdbc_password}</value>
</property>
<property name="minPoolSize">
<value>2</value>
</property>
<property name="maxStatements" value="1000"></property>
<property name="maxPoolSize" value="5"></property>
<property name="idleConnectionTestPeriod" value="120"></property>
<property name="maxIdleTime" value="300"></property>
</bean>
只需要在配置文件中引入以上三种之一就可以了。
当然(1) 可以一次引入多个.properties文件,(2)和(3)一次只可以引入单独的.properties文件。
package com.ethel.pagination.demo.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
@Component
public class PropertyPlaceHolderTest {
@Value("${redis.masterName}")
String masterName;
}
测试类:
package com.ethel.pagination.demo.service;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testMain {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"classpath:spring/spring-base.xml","classpath:spring/spring-db.xml","classpath:spring/spring-mvc.xml"});
PropertyPlaceHolderTest bean = ctx.getBean(PropertyPlaceHolderTest.class);
// PropertyPlaceHolderTest bean = (PropertyPlaceHolderTest)ctx.getBean("testName");
System.out.println(bean.masterName);
}
}