gpt4 book ai didi

java - 如何修改 java 属性文件中的值

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:51 24 4
gpt4 key购买 nike

我有一个 config.properties 文件,其中包含可配置的属性,例如部署在 tomcat 上的 Web 应用程序中的数据库连接详细信息。例如

local.driver: com.mysql.jdbc.Driver
local.username:myuser
local.password:mypass

dev.driver: com.mysql.jdbc.Driver
dev.username:mydevuser
dev.password:mydevpass

我可以使用 spring 环境对象或 @Value 从 config.properties 中检索值。我的问题是如何让 Spring 的环境对象在本地运行时选择本地属性,而在 dev 上运行时如何让 dev 属性选择本地属性?此外,保存敏感数据听起来也不对,例如生产数据库连接属性文件中的详细信息将在代码库中 float 。那么在生产环境中如何添加生产细节呢?理想情况下,我想随时更改它们,而不必重新部署应用程序。我的方向正确吗?

注意 - 我在 SO 上看到的所有答案都讨论了在 Java 代码中更改这些属性。我不想那样做,我希望能够独立于应用程序代码配置这些值。

谢谢

最佳答案

你可以看看spring profiles为特定环境加载特定文件。

或者,您也可以使用容器中的 JNDI 属性或环境属性集对应用程序上下文中加载属性的文件进行参数化。

示例:

<context:property-placeholder ignore-unresolvable="true" location="${env.config.file:classpath*:META-INF/spring/profiles/dev/dev.properties}" />

env.config.file 可以在容器级别(比如 Tomcat)在启动时使用 -Denv.config.file= 设置。通过这样做,Spring 会自动在系统 Prop 中找到该属性并替换它。如果您没有明确设置它(例如,在 dev 中您可能会使用一些其他容器,例如 jetty),它将使用给定的默认值(在本例中为 dev.properties)。

将properties文件放在war/ear之外,可以随意更改,只需要重启context即可。或者,您可以查看可重新加载的属性占位符。如果您不想明文存储密码,这也会有所帮助。

对于属性文件中的加密信息,如果您使用的是 Spring 3,您还可以检查:http://www.jasypt.org/spring3.html .

关于java - 如何修改 java 属性文件中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33897347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com