java - 带有 Spring : how externalize properties file? 的 Web 应用程序

标签 java spring tomcat properties configuration

我在服务器 Tomcat 上使用 Spring 框架构建了一个 J2EE 网络应用程序,我的应用程序需要读取一些属性(如 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>

数据库.属性:

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

最佳答案

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

root-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

关于java - 带有 Spring : how externalize properties file? 的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46472168/

相关文章:

java - 最终的局部变量 cb 可能已经被赋值

java - 如何使用 gradle 中的 java 插件传递 vm 参数?

java - 如何动态控制for循环的嵌套层次?

java - BeanNameAware 和 BeanFactoryAware

java - 使用 Spring 加载显示 NPE 的 java 属性文件

java - 如何使用布局页面以外的图 block 插入属性

java - tomcat 7.0.23/jdk 1.6.x 中 java.lang.VerifyError 的解决方案?

tomcat - 在 Grails 中动态配置文件路径

java - 如何配置 Tomcat JULI 日志记录来滚动日志文件?

java - Android单列Gridview