Spring的Web应用程序:如何外化属性文件?

时间:2017-09-28 14:51:16

标签: java spring tomcat properties configuration

我在服务器Tomcat上使用Spring框架构建了一个J2EE Web应用程序,我的应用程序需要读取一些我需要外部的属性(如jdbs连接参数,文件夹路径等等)。 我的意思是今天我把jar放在服务器上。如果在2年内连接数据库参数或我想要使用的文件夹将要更改,我不想重新部署应用程序,只需更改属性文件。

我现在拥有的是类路径中的.properties文件,以及一个读取它的bean:

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

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="url" value="${jdbc.url}" />
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

database.properties:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/cheExport?useSSL=false
jdbc.username=root
jdbc.password=root

我如何实现目标?

如果我记得很清楚,我可以在服务器xml中做一些事情,我可以在其中指定某个文件夹包含属性文件。但那我怎么把这些东西放在一起呢?

在这篇文章中Read properties file outside JAR file被问到同样的问题,但是没有使用Spring,所以我认为它在我的情况下没有用

我还读到在这种情况下使用spring boot很常见,但我使用的是Spring MVC

1 个答案:

答案 0 :(得分:0)

您使用util属性。只是为我展示我的示例代码。

<强>根context.xml中

<util:properties id="config"
    location="classpath:config/config.properties" />

<bean id="officeDataSource"
    class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="#{config['driverClass']}" />
    <property name="url" value="#{config['commonUrl']}" />
    <property name="username" value="#{config['username']}" />
    <property name="password" value="#{config['password']}" />
</bean>

<强> config.properties

driverClass=org.mariadb.jdbc.Driver
commonUrl=jdbc:mariadb://123.345.563.16:3306/FACE_BOOK_DB?useUnicode=yes&amp;characterEncoding=UTF-8

username=id
password=pw

为您的项目结构图像。在项目中存在资源(web-inf-classes-config)。

enter image description here