Environment.getProperty null - Spring-Boot Spring-Cloud

时间:2015-07-01 03:00:33

标签: spring spring-boot spring-cloud

我有一个使用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吗?它是如何工作的。

1 个答案:

答案 0 :(得分:1)

问题在于从配置服务器加载的配置中的属性spring.application.name。该属性在config-server中被错误地给出,尽管它在classpath中有一个正确的值:bootstrap.yml。

首次刷新后,现有的属性已从环境中清除。 第二次刷新后,环境值被加载。

从config-server属性文件中删除属性spring.application.name修复了该问题。即使没有@RefreshScope

,现在刷新也能正常工作