我有一个库,其中包含@ConfigurationProperties(prefix ="b")
和@ConditionalOnProperty(prefix = "b", name= "c")
的配置类,在我包含此配置类的项目中,属性“b”嵌套在名为“a”的属性下,而不是位于properties.yml的根级别,因此属性“b”的名称为“a.b”,配置类将被忽略,属性名需要在属性文件中保持“a.b”,有没有办法告诉spring Boot 忽略属性“b”的“a”前缀,或者在application.yml加载后将属性名从“a.b”重写为“b”?
2条答案
按热度按时间but5z9lq1#
你可以使用YAML锚和别名来满足这一需求(可能,取决于你所使用的配置类的确切上下文)。YAML锚点类似于HTML中的锚点(
<a>
标记);用锚标记yaml的某个部分,然后用其他地方的引用来引用它。引用是锚定值的别名。在您的示例中,假设条件配置类如下所示:
您可以使用如下的YAML配置来填充它:
锚名称(在我的示例中为
b-alias
)可以是您想要的任何名称,我选择的名称没有什么特别之处。如果你想了解更多关于YAML锚点的信息,this is a decent explanation。它是Bitbucket文档的一部分,但是提供了一个很好的通用解释和例子。当然,还有很多关于YAML锚点的其他网页。
lsmepo6l2#
所以你的配置类和属性文件不能被修改。你可以在运行时在你的
application.yml
中重命名它:B属性
这个属性文件:
my-props-file.properties
您可以在运行时重命名
application.yml
中的属性(在src/main/ressources/下的类路径中定义):应用程序.yml