我有一个使用org.springframework.core.env.Environment
自动装入的控制器。
@Controller public class RegistrationController{
@Autowired (required=false)
private ServiceA serviceA;
@Autowired
Environment env;
spring-boot模块配置了cloud-config-client。 它在启动时从配置服务器读取配置。
控制器以其方法之一从Environment获取值。
Integer.valueOf(env.getProperty("services.fixeddelay.val"));
但是当我通过刷新端点/refresh
刷新时,它从环境中获取属性为空。
经过几次刷新后,它获得了价值。
以这种方式自动装配有问题吗?我应该在这里使用@RefreshScope
吗?它是如何工作的。
答案 0 :(得分:1)
问题在于从配置服务器加载的配置中的属性spring.application.name
。该属性在config-server中被错误地给出,尽管它在classpath中有一个正确的值:bootstrap.yml。
首次刷新后,现有的属性已从环境中清除。 第二次刷新后,环境值被加载。
从config-server属性文件中删除属性spring.application.name
修复了该问题。即使没有@RefreshScope