[英]How to use PropertyPlaceholderConfigurer at Java SE project
我在下面有spring配置,可以在Java Classess的文件中使用訪問屬性。 JavaEE項目有很多方法,如下所示:
<context:component-scan base-package="com.service.pack" />
<context:property-placeholder properties-ref="appProperties"/>
我可以在Java SE項目中使用上述方法,因此嘗試過PropertyPlaceholderConfigurer類,但是此時從PropertyPlaceholderConfigurer類中看不到applicationProperties bean,因此propertiesMap為null。
我究竟做錯了什么? 有沒有一種簡單的方法可以從類文件(如javaee項目)訪問屬性
<bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:app.properties"/>
</bean>
@Component
public class PropertiesUtil extends PropertyPlaceholderConfigurer {
private static Map<String, String> propertiesMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory,
Properties props) throws BeansException {
super.processProperties(beanFactory, props);
propertiesMap = new HashMap<String, String>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
propertiesMap.put(keyStr, parseStringValue(props.getProperty(keyStr),
props, new HashSet()));
}
}
public static String getProperty(String name) {
return (String) propertiesMap.get(name);
}
}
我不確定您要做什么,但是在上面的示例項目中, PropertiesUtil
從PropertyPlaceholderConfigurer
擴展的,但是您的XML配置引用的是PropertyPlaceholderConfigurer
而不是您的子類。 因此,如果僅此而已,則甚至不會調用您的類。
我在本地使用以下配置進行了嘗試,並且有效:
<bean id="applicationProperties" class="com.foo.yourpackage.PropertiesUtil">
<property name="location" value="classpath:app.properties"/>
</bean>
現在,我了解到您正在嘗試訪問代碼中的屬性。 Environment
抽象具有您所需要的一切,請查看此博客文章和環境的Javadoc了解更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.