您的位置:首页 > 编程语言 > Java开发

将 Spring + Maven 的 jdbc.properties 配置文件外移

2018-03-05 17:57 561 查看

注意

有些地方是一行的,该行末尾被我用 \ 换行并忽略换行所有空格、换行符。

项目结构


Spring 原配置

通常 
Spring
 配置文件 
applicationContext.xml
 是如下配置:(缩写代码)
<beans>
<!-- 设置属性配置文件 -->
<context:property-placeholder
location="classpath:jdbc.properties"/>

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${mysql.jdbc.driverClassName}"/>
<property name="url" value="${mysql.jdbc.url}"/>
<property name="username" value="${mysql.jdbc.username}"/>
<property name="password" value="${mysql.jdbc.password}"/>
</bean>
</beans>
jdbc.properties
 文件配置如下:
mysql.jdbc.driverClassName=com.mysql.jdbc.Driver
mysql.jdbc.url=jdbc:mysql://127.0.0.1:3306/cjsd?useUnicode=true& \
characterEncoding=utf-8&characterSetResults=utf-8& \
zeroDateTimeBehavior=convertToNull \
mysql.jdbc.username=root
mysql.jdbc.password=admin
在这时,我们用 Maven 的 Package打包发现,会将 jdbc.properties 打包到 jar 包中.

Spring优化配置

我们将
<context:property-placeholder
location="classpath:jdbc.properties"/>
改成:
<!-- 定义受环境影响易变的变量 -->
<bean class="org.springframework.beans. \
factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName"
value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
<list>
<!-- 标准配置 -->
<value>classpath:jdbc.properties</value>
<value>file:./conf/jdbc.properties</value>
</list>
</property>
</bean>
其中,配置了两个资源文件,classpath是用于调试时指定资源文件,file 是发布后的资源文件目录,在执行jar的conf目录.这时Spring会报一个资源文件不能找到的错误,但是Spring资源文件只会加载一次,所以对性能稍有影响问题不大。

Maven 资源文件排除

我们在 
pom.xml
 中的 
build
 节点增加如下代码:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/jdbc.properties</exclude>
<exclude>jdbc.properties</exclude>
</excludes>
</resource>
</resources>
其中第一段配置声明:在src/main/resources目录下,仅jdbc.properties文件不是资源文件。在这时,我们发布后发现 jar 包里面的资源文件 
jdbc.properties
 已经不存在。

Maven 资源文件复制

然后我们可以在 plugins 中增加插件,将配置文件 
jdbc.properties
 复制到 
conf
 目录下.
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-xmls</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/conf</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/jdbc.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
这时,我们的文件更改成功,需要注意 Maven 的 Clean .不然可能会存在错误.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  maven Spring