由于开发和测试需要连接不同的数据库,来回更改配置文件有些麻烦,所以想要把配置文件放到项目外,项目启动时,直接读取本地的配置文件,需要时直接替换文件即可。
如果项目的配置文件是.xml类型的文件,则需要先把它抽取成一个.properties文件。如果不是则不需要这步操作。
如下以这个xml文件为例
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value> jdbc:mysql://localhost:3306/gridmgmt?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean> 数据库相关的一些配置,我们需要将数据库的驱动,路径,用户名以及密码抽离出来 ################################################################# # # 数据库配置 # ################################################################# # 数据库驱动 base.database.driver = com.mysql.jdbc.Driver # 数据库地址 base.database.url = jdbc:mysql://localhost:3306/gridmgmt?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8 # 数据库用户名 base.database.username = root # 数据库密码 base.database.password = root 好了 现在已经抽离出来了 接下里就是配置项目启动的时候 加载本地的配置文件 读取里面的数据 我们将运用 Spring的 PropertyPlaceholderConfigurer <!-- 数据库配置文件读取容器设置 --> <bean id="propertyFileConfigForSet" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" > <value>file:${catalina.home}/conf/system-config.properties</value> <!-- 获取tomcat路径下文件--> </property> </bean> 其中${catalina.home}这个占位符获取的是你本地Tomcat得路径 如:
则这个占位符获取的是D:\apache-tomcat-8.0.37,我将配置文件放到了Tomcat路径下的conf文件夹下
当程序运行时,会加载这个路径下的名字叫system-config.properties文件,获取里面的数据,数据获取好了之后,我们就差最后一步,在配置文件中运用加载好的配置信息
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>${base.database.driver}</value> </property> <property name="url"> <value>${base.database.url}</value> </property> <property name="username"> <value>${base.database.username}</value> </property> <property name="password"> <value>${base.database.password}</value> </property> </bean> 到了这里项目的配置文件已经与项目分离好了,运行一下试试吧