当前位置: 首页 > 知识库问答 >
问题:

获取Spring属性占位符及其解析值的列表

吕自明
2023-03-14

我想让运行中的Spring(引导)应用程序的所有属性占位符及其解析值都可用于进程监控。在第一步中,可以将它们写入日志,或者创建一个类似于application.pid文件的'resolved.properties'文件。应该考虑使用属性占位符(隐式/显式)的所有属性。

动机:在操作过程中通常很难知道解析属性的值。系统属性或命令行参数是“可见的”,但代码中隐藏的默认值(如@value(“${timeout:30000}”))很难找到。我希望能够回答“正在运行的应用程序的配置看起来是怎样的?”我可以在我的所有spring应用程序中使用的通用方式。

我知道Spring Boot执行器/ConfigPropsendpoint,但这只包括@ConfigurationProperties。我想要得到一个使用占位符的所有属性的列表。

共有1个答案

柳镜
2023-03-14

(当前)没有办法获得环境抽象中的所有属性。这是有意为之的,可以在这里读到。这也是为什么不可能获得用于分辨率的所有值的原因。

这些值和解析在运行时被记录下来,告诉在运行时哪个键是从哪里解析的。但该日志记录相当冗长,并且每次使用StringValueResolver时都会进行日志记录。

您可以通过提供自定义的PropertySourcesPlaceHolderConfigureer来获得部分结果,该维护解析键/值对的集合。但并非每个解决方案都使用PropertySourcesPlaceHolderConfigureer有些解决方案直接使用StringValueResolver实现,绕过PropertySourcesPlaceHolderConfigureer

 类似资料:
  • 问题内容: 我有我的配置: 我得到错误 我知道这可能缺少属性文件,但是我在类路径中恰好有它。有什么不见了? 我的web.xml: 问题答案: 你的应用程序中可能有多个。尝试在超类的方法上设置一个断点,看看在应用程序启动时是否多次调用了该断点。如果不止一个,则可能需要查看配置属性,以便你的应用程序可以正常启动。

  • 我看到下面的错误,当我试图读取属性从类路径在我的Spring项目中使用的@属性源注释。我已经粘贴了我的代码下面,请你帮助让我知道我错过了什么?谢谢。 警告:在上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreation异常:创建名称为“客户仓库”的bean时出错:自动构建依赖项注入失败;嵌套异常java.lang.Illega

  • 我不明白为什么不能在Spring-Boot中向application.properties文件中注入值。外部属性添加到logging.file变量中。我有一个application.properties文件,看起来如下所示 具有相应的Spring-boot应用程序类 请注意,如果我自己注入服务器端口号,那么在注入和启动应用程序时没有任何问题。 我在这个问题上兜圈子,弄不清自己做错了什么。

  • 我的数据库配置类: 和AppConfig: } 嗨,我上面有个错误,我不知道怎么修复,你能帮我吗?在添加这个bean之前,我的项目运行良好: }

  • 问题内容: 我对春天还很陌生,所以请问这是一个愚蠢的问题。当我尝试启动程序时,出现以下错误:。执行以下代码时,将引发错误: 资源文件夹中存在一个名为的属性文件,其中包含主机和端口的信息。我不确定在哪里定义(如果有的话)。也许甚至没有定义,这就是问题所在。我需要将其更改为类似的东西还是缺少其他内容? 问题答案: 您没有正确读取属性文件。propertySource应该将参数传递为:或。将注释更改为:

  • 问题内容: 有谁知道我是否应该可以在预选赛中使用属性占位符作为表达式?我似乎无法正常工作。 我正在使用Spring 3.0.4。 XML: config.properties: 问题答案: 这可行。如果仅使用默认的spring bean名称,则可以省略服务名称。serviceA与ServiceA等 XML: Props: