【问题标题】:Dynamically set all properties files at runtime:在运行时动态设置所有属性文件:
【发布时间】:2018-12-28 04:00:33
【问题描述】:

我正在尝试在运行时在 java spring 应用程序中动态设置所有属性。我使用程序参数/系统属性(a different SO post explaining this in detail here)成功地做到了这一点,但我还没有找到一种方法来动态读取.properties 文件中的所有属性并编辑它们的值。 spring应用上下文下存储的属性源不包含前面提到的文件中的属性。

是否可以加载一个 spring 应用程序并在创建任何 bean 之前,介入并编辑项目中正在加载的所有属性文件的值?

【问题讨论】:

  • 属性是只读的,只是告诉应用程序配置了什么。如果您想通过添加一些信息来更改值,只需封装在@Configuration 类下,使用@Value 注释注入您的属性,并使用getter 访问带有转换信息的新属性。
  • 属性文件应该是您的应用程序的静态只读输入。您尝试编辑的值 - 这些真的是配置吗?
  • 这些值是只读的,但应该被解析......所以从技术上讲,它们是一个过程中的中间值。一个很好的例子是数据库密码。您不应将其存储为纯文本,因此您可能希望在启动时解析该值。
  • @ChadVanDeHey 对于您提到的用例,这些值需要在启动应用程序时作为命令行参数传递,或者应该通过我在回答中提到的配置服务器使用.属性文件中的值是静态的,不能在运行时解析为不同的值。

标签: java spring properties properties-file


【解决方案1】:

添加到属性文件的属性在应用启动时被读取。一旦启动并运行,对属性文件的更改将不会反映,除非您重新启动应用程序。无法动态更新属性文件以反映在应用程序中。

动态更新应用属性的唯一方法是使用配置服务器之类的东西。在此处阅读。

https://spring.io/guides/gs/centralized-configuration/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多