我正在尝试从 Spring 的Environment property abstraction动态访问属性。
我这样声明我的属性文件:
<context:property-placeholder
location="classpath:server.common.properties,
classpath:server.${my-environment}.properties" />
在我的属性文件server.test.properties
中,我定义了以下内容:
myKey=foo
然后,给定以下代码:
@Component
public class PropertyTest {
@Value("${myKey}")
private String propertyValue;
@Autowired
private PropertyResolver propertyResolver;
public function test() {
String fromResolver = propertyResolver.getProperty("myKey");
}
}
当我运行这段代码时,我最终得到propertyValue='foo'
, 但是fromResolver=null
;
接收propertyValue
表明正在读取属性,(我从代码的其他部分知道这一点)。但是,尝试动态查找它们是失败的。
为什么?如何动态查找属性值,而不必使用@Value
?