这似乎是一个非常基本的问题,但我在任何地方都找不到直接的答案。
如何在云配置服务器实例中配置Spring Boot的基本属性?显然,与配置服务器相关的Spring boot属性(即cloud.config.uri、*.username、*.password)必须在bootstrap.yml中
我希望spring.rabbitmq.addresses之类的东西来自我的配置服务器实例,而不是硬编码到引导程序或应用程序yml中。
如果我把这个特定的属性放到我的Git Repo中,Spring AMQP仍然默认为localhost。在我看来,Git中的设置被完全忽略了。
发布于 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有一吨的可能配置。我当然不想重复里面的所有东西。
@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;
}
}https://stackoverflow.com/questions/47064237
复制相似问题