1、Spring配置文件里使用外部属性文件:
1)、在Spring配置文件中配置数据源或邮件服务器等资源数据时,会直接把账号密码直接写在配置文件中,一种更好的做法是把这些配置信息独立到一个外部属性文件中,并在Spring文件中通过${username}这样的方式来引用属性文件中的属性项。 2)、好处:一是如果多个应用公用一个资源配置信息,一旦资源信息修改,只需要修改属性文件一处,而不用修改多处Spring配置文件。二是维护和部署方便,如果需要修改某个参数,不需要关注结构复杂信息量大的Spring配置文件
2、Spring怎么使用外部属性文件:
1)、Spring提供一个PropertyPlaceholderConfigurer,它能使Bean(比如数据源Bean)在配置时引用外部属性文件。
3、原来的写法:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@10.10.0.85:1521:ora10</value> </property> <property name="username"> <value>admin</value> </property> <property name="password"> <value>123456</value> </property> </bean>
4、使用外部属性文件后jdbc.properties:
db.driver=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@xxx.xxx.xx.xxx:21521:ora10 db.username=admin db.password=123456
<!-- 引入外部数据库属性文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:com/sxit/config/jdbc.properties</value> </property> </bean> <!-- 数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${db.driver}</value> </property> <property name="url"> <value>${db.url}</value> </property> <property name="username"> <value>${db.username}</value> </property> <property name="password"> <value>${db.password}</value> </property> </bean>
5、PropertyPlaceholderConfigurer属性:
1)、locations:如果只有一个外部属性文件直接用location指定就可以了,如果是多个属性文件,则可通过如下方式配置: <property name="locations"> <value>classpath:com/zjy/gpx/config/dbconfig.properties1</value> <value>classpath:com/zjy/gpx/config/dbconfig.properties2</value> <value>classpath:com/zjy/gpx/config/dbconfig.properties3</value> <value>classpath:com/zjy/gpx/config/dbconfig.properties4</value> </property> 2)、fileEccoding:属性文件的编码格式: <property name="fileEncoding"> <value>utf-8</value> </property> 3)、order:如果配置文件中定义了多个PropertyPlaceholderConfigurer,可根据该属性指定优先顺序: <property name="order" value="1" /> 4)、placeholderPrefix:占位符前缀,“${”是默认的占位符前缀,可根据需要改为其他前缀符: <property name="placeholderPrefix" value="#{" /> 5)、placeholderSuffix:占位符后缀,默认为“}”: <property name="placeholderSuffix" value="*" />
6、还可以通过context命名空间定义属性文件:
<context:property-placeholder location="classpath:com/sxit/config/jdbc.properties"/>