我有一个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
来配置属性特性,这一事实已经过时了。