这似乎是一个非常基本的问题,但我无法在任何地方找到答案。
如何从Cloud Config Server实例配置基本Spring Boot属性?显然,与启动配置服务器相关的Spring启动属性(即cloud.config.uri,* .username,* .password)必须位于bootstrap.yml
我希望spring.rabbitmq.addresses等来自我的配置服务器实例,而不是硬编码到引导程序或应用程序yml中。
如果我将该特定属性放入我的Git Repo中,Spring AMQP仍默认为localhost。在我看来,Git中的设置完全被忽略了。
答案 0 :(得分:0)
因此对代码的调查显示我的问题是基于一些错误的假设。它看起来并不像春天的弹簧。*属性有任何潜在的统一性。
例如我所指的Spring Rabbit属性来自Rabbit特定对象:org.springframework.boot.autoconfigure.amqp.RabbitProperties
这是由RabbitAutoConfiguration.java引入的。 RabbitProperties当然没有任何能够引用Spring Cloud Config Server值的东西。我仍然需要追踪RabbitProperties作为bean的位置。
目前,我攻击了我自己的RabbitProperties bean实现并将其标记为@Primary。我只是使用标准@Value从Cloud Config Server中提取我所需的值。这将让我得到一个我正在做的POC,但是因为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;
}
}