这一部分讲解了使用外部属性文件配置 bean,相关的思维导图讲解在这一部分。
使用外部属性文件配置 bean。
在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如:文件路径、 数据源配置信息等)。 而这些部署细节实际上需要和 Bean 配置相分离。
Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory 后置处理器, 这个处理器允许用户将 Bean 配置的部分内容外移到属性文件中。可以在 Bean 配置文件里使用形式为 ${var}
的变量,PropertyPlaceholderConfigurer 从属性文件里加载属性, 并使用这些属性来替换变量。
Spring 还允许在属性文件中使用 ${propName}
,以实现属性之间的相互引用。
下面是一个小的案例,我们引入 c3p0 的数据源。
步骤如下:
1、先引入相关的 jar 包
2、配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="driverClass" value="${driverClass}"></property>
</bean>
3、编写测试代码
@Test
public void testDataSource() throws SQLException{
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
DataSource ds = (DataSource) ctx.getBean("dataSource");
System.out.println(ds.getConnection());
}
下面我们引入属性文件。
首先我们须要添加一个命名空间 context 。
<context:property-placeholder location="classpath:db.properties"/>
属性文件示例:
user=root
password=123456
jdbcUrl=jdbc:mysql:///mybatis
driverClass=com.mysql.jdbc.Driver
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="driverClass" value="${driverClass}"></property>
</bean>