【问题标题】:How to use PropertyPlaceholderConfigurer at Java SE project如何在 Java SE 项目中使用 PropertyPlaceholderConfigurer
【发布时间】:2014-04-16 08:55:41
【问题描述】:

我有下面的弹簧配置来使用来自 java Classess 的文件中的访问属性。 JavaEE项目有多种方式,如下:

<context:component-scan base-package="com.service.pack" />
    <context:property-placeholder properties-ref="appProperties"/>

我可以在 java SE 项目中使用上述方法,因此尝试了 PropertyPlaceholderConfigurer 类,但此时从 PropertyPlaceholderConfigurer 类中看不到 applicationProperties bean,因此 propertiesMap 为空。

我做错了什么?有没有一种简单的方法可以从类文件(如 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);
    }
}

【问题讨论】:

  • 为什么在 Jave SE 项目中会有所不同...没有区别...
  • 调用processProperties(方法时,Properties props 参数为空。为什么?

标签: java spring properties


【解决方案1】:

我不确定您要做什么,但在上面的示例项目中,PropertiesUtil 扩展自 PropertyPlaceholderConfigurer 但您的 XML 配置引用了 PropertyPlaceholderConfigurer 而不是您的子类。所以如果这就是你所拥有的,你的类甚至不会被调用。

我在本地使用以下配置进行了尝试,并且成功了:

<bean id="applicationProperties" class="com.foo.yourpackage.PropertiesUtil">
    <property name="location" value="classpath:app.properties"/>
</bean>

现在,我了解到您正在尝试访问代码中的属性。Environment 抽象具有您需要的一切,请查看this blog postjavadoc of Environment 了解更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2012-06-13
    • 2016-10-07
    • 2016-11-13
    • 2016-03-17
    • 2014-06-03
    相关资源
    最近更新 更多