当前位置: 首页 > 知识库问答 >
问题:

Spring Boot配置覆盖被忽略

巫马松
2023-03-14

我已经编写了许多通过RESTAPI调用进行通信的服务。这些服务可以配置为使用HTTP或HTTPS。任何给定的客户端都具有定义到服务器的连接的安全配置。“默认”配置属性由应用程序中的值设置。yml在这一点上效果很好。

然而,我逐渐意识到,这在更现实的情况下并不适用。问题是,我试图设置特定的参数,例如启动客户端时的服务器主机/端口,而我设置的值被忽略。

例如:

服务A(客户端)将出于某种目的与服务B(服务器)通信。服务A的安全配置设置如下:

@Configuration
@EnableConfigurationProperties({ClientConnectionProperties.class,
    SecurityCertificateProperties.class})
public class ClientSecurityConfiguration {
  ...
}

@ConfigurationProperties("client.connection")
public class ClientConnectionProperties {
  ...
}

@ConfigurationProperties("server.ssl")
public class SecurityCertificateProperties {
  ...
}

application.yml有分配给配置对象中的值的各种属性的定义。

client:
  connection:
    scheme: https
    host: localhost
    port: 8443

server:
  port: 7081
  ssl:
    enabled: true
    protocol: TLS
    trust-store-type: JKS
    trust-store: classpath:server.truststore
    trust-store-password: <password>
    key-store-type: JKS
    key-store: classpath:server.keystore
    key-store-password: <password>

当客户端和服务器都在本地主机上运行时,这一切都很好。然而,我正在测试在不同主机上运行它们,所以我需要覆盖客户机。联系从本地主机到实际主机。我通过指定Dclient来实现这一点。联系主机=

如何将覆盖值设置到这些配置项中?有没有办法推迟或延迟“默认”加载,以便我的值生效?有没有其他方法可以让他们进入呢?

共有1个答案

闻人宇定
2023-03-14

您可以使用Spring参数而不是JVM参数来覆盖Spring Boot属性。

例子:

java -jar your-app.jar --client.connection.host=<host>

相关问题:https://stackoverflow.com/a/37053004/12355118

 类似资料:
  • 尝试使用java kafka adminClient配置新创建的kafka主题时,会覆盖值。 我曾尝试使用控制台命令设置相同的主题配置,但效果很好。不幸的是,当我尝试通过Java代码时,一些值发生冲突并被覆盖。 我希望该主题正确地包含所有给定的配置值。

  • 我试图覆盖Archaius为线程池提供的默认配置(如corepool大小、最大池大小、队列大小等)。但不知何故,它并没有起到作用。下面是我在application.yml文件中的配置。 Hystrix:命令:QueryTimeOutHandler:执行:隔离:线程:TimeOutInMilliseconds:600000线程池:QueryTimeOutHandler:CoreSize:200 Ma

  • If set to true, variables read in from config files will overwrite each other. Otherwise, the variables will be pushed onto an array. This is helpful if you want to store arrays of data in config file

  • 我有一个使用Spring-Mongo集成的Spring应用程序。在主端配置XML中,我们有这样的东西来定义Mongo实例(有几个): 我想在Fongo的BDD套件配置中覆盖这一点,这样测试就不会使用真正的mongo。 我有点被“mongo:mongo”的具体设置搞得晕头转向。我以为你最终会得到一个com。mongodb。蒙哥,别这样。XML似乎指的是Spring MongoType? 我在BDD配

  • 然后我们有这样的服务: 我的第一个bean是由@repository注释创建的,另一个bean是在Spring配置类中声明的: 如果我运行我的应用程序,SomeServiceImpl中的属性someDaoAnotherDataSource没有在配置类中声明我的bean,而是用注释存储库声明了bean。

  • 我正在使用Spring Boot 2.1.6.RELEASE,我想知道应该如何使用? 配置示例: 和位于不同的模块中。 错误: 无法注册在类路径资源[com/example/autoconf/configuration/app configuration . class]中定义的bean“foo”。已在类路径资源[com/my/configuration/myautoconfiguration .