问题描述
我有一个 Spring Boot 项目,它依赖于 3rd 方 SDK 库之一,其中包含一个带有一些谷歌云 URL 的 YAML 文件。
我想在我的 YAML 中覆盖这些值,这适用于我的大部分项目,但由于某种原因,这个特定的依赖库没有运气。
依赖代码
if (distance < enemydistanceRun)
{
Vector3 dirToPlayer = transform.position - phs.transform.position;//<-
Vector3 newPos = transform.position - dirToPlayer;
Enemy.SetDestination(newPos);
Debug.Log("Chacing.");
}
Yaml 文件 application-google-prod.yaml
@ConfigurationProperties("google")
public class GoogleProperties {
String url;
..
..
}
假设这是在一个名为 google-client-sdk-1.0.0
的 jar 中我的代码
Yaml 文件 application-myapp-prod.yaml
google:
url: some url.
所以我希望在调用 lib 中的代码时应该使用 OVERRIDE url,但它会继续使用 jar 文件的 yaml 中的一些 url。
有什么指点吗?
编辑
SDK 包含另一个类 SDK 中带有以下注释的类
spring:
profiles:
include: google-prod
google:
url: OVERRIDE url.
我认为这会迫使 SDK 从特定 YAML 中选择值,而忽略我的应用中 YAML 中覆盖的值。
解决方法
免责声明:
A 并不是要重现您的问题,这只是一个建议。
注意 @Configuration
上没有 GoogleProperties
。
您必须在属性类上添加 @Configuration
:
(在这种情况下不可能)或在要使用属性的类的顶部添加 @EnableConfigurationProperties(GoogleProperties.class)
。
例如:如果您想在所有应用中使用它们,您的主类。
如前所述in the docs,您还可以使用:@ConfigurationPropertiesScan({ "com.google.SDK","org.acme.another" })
在您的主类或任何需要这些道具的 @Configuration
类之上。
注意:As explained here,事实上,从 spring-boot 2.2 开始,我们不再需要 @Configuration
或 @EnableConfigurationProperties
用于配置属性功能已经过时了。