在开发过程中,我们为第三方应用提供调用接口的工具类,但在测试时发现一个问题:使用@Value注解无法获取配置文件中的值,也无法加载默认值。具体的配置如下: @Value("${login.url:/yuxuntoo/login}") private String loginUrl; 从上述配置文件中可以清楚地看到,注解和配置方式都是正确的。经过源码的分析,@Value注解实际上对类上的value后面的属性值进行解析,然后与配置文件中的数据进行比较。如果比较成功,就通过反射将相关属性赋值。而配置文件的数据在加载environment文件时已经存储。主要的代码位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean。从配置上来看,没有写错的可能性很大,因此我们需要从@Value无法获取配置文件内容的几种可能性入手。一种可能是变量被static关键字修饰,这可能导致我们无法获取配置文件内容。