首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置spring.*从云配置服务器启动属性

配置spring.*从云配置服务器启动属性
EN

Stack Overflow用户
提问于 2017-11-02 05:48:22
回答 1查看 424关注 0票数 0

这似乎是一个非常基本的问题,但我在任何地方都找不到直接的答案。

如何在云配置服务器实例中配置Spring Boot的基本属性?显然,与配置服务器相关的Spring boot属性(即cloud.config.uri、*.username、*.password)必须在bootstrap.yml中

这里提供的其他属性如何:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#common-application-properties

我希望spring.rabbitmq.addresses之类的东西来自我的配置服务器实例,而不是硬编码到引导程序或应用程序yml中。

如果我把这个特定的属性放到我的Git Repo中,Spring AMQP仍然默认为localhost。在我看来,Git中的设置被完全忽略了。

EN

回答 1

Stack Overflow用户

发布于 2017-11-04 04:00:03

因此,对代码的调查显示,我的问题是基于一些错误的假设。看起来Spring Boot没有任何底层的单位。*属性。

例如,我提到的Spring Rabbit属性来自一个特定于Rabbit的对象: org.springframework.boot.autoconfigure.amqp.RabbitProperties

这是由RabbitAutoConfiguration.java拉入的。RabbitProperties当然没有任何能够引用Spring Cloud Config Server值的东西。我仍然需要追踪RabbitProperties是在哪里被制作成bean的。

目前,我修改了自己的主要bean实现,并将其标记为@ RabbitProperties。我只是使用标准的@Value从Cloud Config Server中拉入我想要的值。这将使我通过我正在做的概念验证,但这是一个黑客,因为RabbitProperties有一吨的可能配置。我当然不想重复里面的所有东西。

代码语言:javascript
复制
 @EnableRabbit
 @Configuration
 public class RabbitConfigurer {

     @Value("${spring.rabbitmq.host:'localhost'}")
     private String host;

     @Value("${spring.rabbitmq.port:5672}")
     private int port;

     @Value("${spring.rabbitmq.username}")
     private String username;

     @Value("${spring.rabbitmq.password}")
     private String password;

     @Bean
     @Primary
     public RabbitProperties rabbitProperties() {

        RabbitProperties rabbitProperties = new RabbitProperties();
        rabbitProperties.setHost(host);
        rabbitProperties.setPort(port);
        rabbitProperties.setUsername(username);
        rabbitProperties.setPassword(password);

        return rabbitProperties;
     }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47064237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档