簡體   English   中英

暴露 <property-placeholder> Spring環境的屬性

[英]Expose <property-placeholder> properties to the Spring Environment

我有一個屬性文件,我通過XML注冊Spring,使用property-placeholder元素:

<context:property-placeholder location="classpath:foo.properties" />

我可以使用@Value注釋訪問屬性,例如

@Value("${prefs.key}")
private String prefValue;

但我還需要通過Spring環境訪問屬性,例如

@Autowired
private Environment env;

public String getValue(String key) {
  return env.getProperty(key);
}

getValue()在這里總是返回null ,即使對於屬性文件中定義的鍵也是如此,因為使用<property-placeholder>似乎不會向Environment公開屬性。 有沒有辦法強制通過環境訪問以這種方式加載的屬性?

從Spring 3.2.x 參考和介紹博客文章

在Spring 3.1之前, context:property-placeholder namespace元素注冊了PropertyPlaceholderConfigurer一個實例。 如果使用命名空間的spring-context-3.0.xsd定義,它仍然會這樣做。 也就是說,即使使用Spring 3.1,也可以通過命名空間保留PropertyPlaceholderConfigurer注冊; 只是不要更新您的xsi:schemaLocation並繼續使用3.0 XSD。

所以,我的猜測是你的XML 沒有使用正確的XSD版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM