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

spring-cloud-consult:无法覆盖ConsulProperties中的默认值

长孙景天
2023-03-14

我使用的是spring cloud Consult 1.0.0.m5和spring boot 1.3.2。spring cloud Consult用于连接到Consult代理的默认主机和端口是localhost:8500。我想改变这一点,但迄今为止我尝试的每一种方法都不尊重设置。

我查看了spring cloud Consult的源代码,并且ConsulProperties是在属性前缀spring.cloud.consult使用@ConfigurationProperties从spring-boot读取的。

下面是针对ConsulProperties的Spring云源中的声明

/**
 * @author Spencer Gibb
 */
@ConfigurationProperties("spring.cloud.consul")
@Data
public class ConsulProperties {
    @NotNull
    private String host = "localhost";

    @NotNull
    private int port = 8500;

    private boolean enabled = true;

    private String prefix = "config";
}

以及如何将其注入spring cloud Consult源以定义向Consult Agent发出http请求的ConsulClient:

/**
 * @author Spencer Gibb
 */
@Configuration
@EnableConfigurationProperties
@ConditionalOnConsulEnabled
public class ConsulAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public ConsulProperties consulProperties() {
        return new ConsulProperties();
    }

    @Bean
    @ConditionalOnMissingBean
    public ConsulClient consulClient() {
        return new ConsulClient(consulProperties().getHost(), consulProperties()
                .getPort());
    }

...
spring.cloud.consul.config.host=172.17.42.1
spring.cloud.consul.config.port=8500
config.host=172.17.42.1
config.port=8500
spring.cloud.consul.host=172.17.42.1
spring.cloud.consul.port=8500
...
import org.apache.commons.lang3.reflect.FieldUtils;
...
@Configuration
@EnableDiscoveryClient
@Order(Ordered.HIGHEST_PRECEDENCE)
@Priority(Ordered.HIGHEST_PRECEDENCE)
public class ConsulConfig {
...

    @Bean
    public ConsulProperties consulProperties() {
        ConsulProperties props;

        try {
            props = new ConsulProperties();

            String host = resolveConsulHost();
            int port = this.consulPort;

            FieldUtils.writeField(props, "host", host,true);
            FieldUtils.writeField(props, "port", port,true);

        }
        catch(Exception e) {
            logger.warn("Unable to set ConsulProperties - using defaults",e);
            props = new ConsulProperties();
        }

        logger.info("Using consulProperties={}",props);

        return props;

    }

...
}

@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
@ComponentScan
public class Application {

    private final Logger logger = LoggerFactory.getLogger(getClass());
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
    }
...
}

如何自定义spring cloud Consult用于主机和端口连接到Consult代理的内容?

共有1个答案

申屠晟
2023-03-14

要回答得迁移注释:

如果您正在使用spring-cloud-starter-consul-allspring-cloud-starter-consul-config,则需要在bootstrap.properties中放入值。

这是文件。要点、spring.application.name以及连接到Consult所需的任何内容。

 类似资料:
  • 当它调用其他eureka客户机时使用feign。然而,当注册到eureka服务器时,它并不费力。我检查了源代码,发现eureka discovery客户端使用了jersey,jersey调用了http apache客户端。问题是,它使用了SchemeRegistryFactory.createDefault(),它将最终调用SSLContexts.createDefault(),后者不会考虑系统属

  • 问题内容: 我已经能够覆盖所有名称以“ android:”为前缀的主题,但是Android themes.xml还定义了似乎无法被覆盖的属性。例如: colorTheground是在Theme.Light xml中定义的,但是在此处添加它可以使我 错误。如何为整个应用程序覆盖该样式? 问题答案: 您可以用修改属性(如)的方式覆盖标准属性,只是不要忘记添加如下前缀:

  • 问题内容: 我想覆盖Java外观。我只想显示不同的按钮。 我想要Windows Look and Feel的所有功能,但仅按钮有所不同。希望你明白我的意思。 还告诉我如何制作圆形的JtabbedPane ??? 问题答案: 自定义GUI类 调用您的自定义GUI类

  • 问题内容: 我有一个模板与此: Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。 我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。 有没有一种方法可以更改/覆盖默认的Django翻译? 谢谢。 问题答案: 最简单的方法是收集在django.contrib.admin语言环境文件夹中找到的.po文件,然后重新编

  • 问题内容: 我已经在现有的mysql数据库中反映了表的负载。我想表示的是,任何表中具有特定名称的任何列默认为datetime.now()。但是,天真地遍历表和列,仅对那些我发现具有特定名称的表和列设置默认设置是行不通的。session.flush()我收到以下错误: 这似乎与对_set_parent的调用(以及在sqlalchemy.schema的第721行中的调用)有关。 有谁知道是否有办法做到

  • 我有一个bean,它使用@value注释填充属性,如下所示 在我的应用程序上下文中,我有以下配置 当values.properties文件不存在时,默认值“none”会按预期设置,但是当属性文件存在时,默认值仍会使用,即使我收到一条日志消息,说明属性文件是从PropertyPlaceholderConfigurer加载的 只有当属性文件丢失和/或占位符不可解析时,我才需要默认值生效;不是一直都是。