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

问题描述

我有一个 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 用于配置属性功能已经过时了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...