Spring 配置属性的外在化

在大多数情况下,我们可以在一个Bean装配文件里配置整个程序,但是有时却需要把部分配置
提取到单独的属性文件里,最常见的一种情形就是配置数据源。

Spring里面,提供了PropertyPlaceholderConfigurer 去告诉Spring从外部属性文件加载特定的配置。
为了启用这个特性,需要在Bean 装配文件里面配置如下的bean.

 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath:database.properties</value>
   </list>
  </property>
 </bean>

现在我们就可以再Bean装配文件里面用占位变量替代硬代码的配置。
从语法上讲,占位变量的形式是${variable}
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName" value="${datasource.jndiname}"/>
</bean> 

上述由JNDI查询数据源进行配置数据库

Spring程序经常会运行在一个j2ee应用程序服务器里,比如JBoss甚至Tomcat等WEB容器里。
这些服务程序可以配置为通过JNDI获取数据源。
好处:他们完全可以在程序之外进行管理。程序本身只需要访问数据库时 请求数据源即可。

 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName" value="/jdbc/aps "/>java:comp/env/jdbc/aps
  <property name="resourceRef" value="true"/>
 </bean> 
 当resourceRef属性为true时,jndiName会被添加java:comp/env/
 
 详细了解classpath:用法 ,请看下一篇