簡體   English   中英

如何在Java SE項目中使用PropertyPlaceholderConfigurer

[英]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);
    }
}

我不確定您要做什么,但是在上面的示例項目中, PropertiesUtilPropertyPlaceholderConfigurer擴展的,但是您的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.

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