覆盖依赖jar文件中的spring-boot属性



我有一个spring启动项目,它依赖于一个第三方SDK库,其中包含一个带有一些google云url的YAML文件。

我想在我的YAML中覆盖这些值,这对我的大多数项目都有效,但由于某种原因,这个特定的依赖库没有运气。

依赖代码

@ConfigurationProperties("google")
public class GoogleProperties {
String url;
..
..
}

Yaml文件application-google-prod.yaml

google:
url: some url.

假设这是在一个名为google-client-sdk-1.0.0的jar中

我的代码

Yaml文件application-myapp-prod.yaml

spring:
profiles:
include: google-prod
google:
url: OVERRIDE url.

所以我期望在调用库中的代码时应该使用OVERRIDE url,但它继续使用jar文件的yaml中的一些url。

指针吗?

编辑

SDK包含另一个类在SDK

中使用以下注释创建类
@Configuation
@PropertySource({"classpath:application-google-prod.yaml})

我认为这是迫使SDK从特定的YAML中选择值,忽略我的应用程序中YAML中覆盖的值。

免责声明:

我们没有必要重复你的问题,这只是一个建议。


注意GoogleProperties上没有@Configuration

您必须在属性类上添加@Configuration:(在这种情况下不可能)或者在您想要使用属性的类的顶部添加@EnableConfigurationProperties(GoogleProperties.class)

E。g:你的主类,如果你想在整个应用程序中使用它们。

正如在文档中提到的,你也可以在你的主类或任何需要这些道具的@Configuration类的顶部使用:
@ConfigurationPropertiesScan({ "com.google.SDK", "org.acme.another" })

注意:正如这里所解释的,从spring-boot 2.2开始,我们不需要更多的@Configuration@EnableConfigurationProperties来配置属性特性,这一事实已经过时了。

相关内容

  • 没有找到相关文章

最新更新