有没有办法在 Spring Boot 中获取所有配置属性的名称?

Posted

技术标签:

【中文标题】有没有办法在 Spring Boot 中获取所有配置属性的名称?【英文标题】:Is there a way to get the names of all configuration properties in Spring boot? 【发布时间】:2016-08-20 08:02:31 【问题描述】:

我对 Spring 真的很陌生。我使用spring boot提供的外部配置功能。它运行良好,我在几个配置类中使用它,通常只使用默认值。现在我想大致了解我使用的配置属性。 这意味着我需要知道使用@Value(...)@ConfigurationProperties(prefix = ...) 设置的所有属性。有没有办法从 Spring 获取这些信息?我可以通过反射来做到这一点,但我认为这不是最好的方法。

【问题讨论】:

spring-boot 中的执行器功能会将这些作为端点之一公开,因此您可以查看源代码并了解它们是如何做到的。 好的,谢谢。我用configprops endpoint来测试它,但它只适用于@ConfigurationProperties(prefix = ...)配置的公共成员。 您可以尝试我的第三方 Spring 执行器端点,该端点公开属性及其 Spring 配置元数据。可选过滤/包含/排除:github.com/ethlo/spring-actuator-addons/tree/master/… 【参考方案1】:

如果您使用的是STS,那么 application.properties 文件有一个特殊的编辑器,具有自动完成功能。如果您使用的是Eclipse,则必须到您要配置的类并检查代码中的@Value 注解。

【讨论】:

谢谢,但这并不能解决我的问题。我希望能够自己扩展程序或将其提供给扩展它的其他开发人员,而无需手动将每个配置条目写入属性文件。因此,我曾希望,在程序启动后,可以将包括默认值在内的整个配置写入新的属性文件。通过使用 STS 编辑器,我仍然需要在了解所有配置属性的情况下手动编写配置。 您可以创建一个名为 META-INF/additional-spring-configuration-metadata.json 的文件并添加如下内容: "properties": [ "name": "my.att" , "type": "java.lang.String", "description": "A description for 'my.att'" ] 在你的 application.properties 你可以添加: my.att = 20 使用 STS,自动完成将可与元数据文件中提供的描述一起使用。更多信息在这里:docs.spring.io/spring-boot/docs/current/reference/html/… 对于程序的开发者来说,这是一种可能的方式。但是我想要的是允许程序的用户(没有特殊的编辑器)仅通过删除配置文件并重新启动程序来重新创建默认配置(例如,以防当前配置损坏)。所以我需要知道是否有一个类我可以覆盖并获取创建默认配置文件所需的信息。

以上是关于有没有办法在 Spring Boot 中获取所有配置属性的名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 测试中获取正在运行的服务器端口?

有没有办法在 Spring Boot 应用程序配置中使用 Spring Cloud cipher?

跟踪 Spring Boot 应用程序中的所有请求

@OneToMany Spring Boot 2.1.5.RELEASE 中的 Spring Data JPA 没有获取所有数据

在 Spring Boot 中使用 Jackson 反序列化 Date 对象

spring boot怎么配日志