我在服务器 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&characterEncoding=UTF-8
username=id
password=pw
为您提供项目结构图像。在您的项目中存在资源(web-inf-classes-config)。
关于java - 带有 Spring : how externalize properties file? 的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46472168/