我在下面有弹簧配置,可以在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 projects
<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);
}
}
答案 0 :(得分:0)
我不确定您要尝试做什么,但在上面的示例项目中,PropertiesUtil
从PropertyPlaceholderConfigurer
延伸,但您的XML配置是指PropertyPlaceholderConfigurer
而不是您的子类。所以,如果这就是你所拥有的,那么你的课程甚至都没有被调用。
我在本地尝试使用以下配置并且它有效:
<bean id="applicationProperties" class="com.foo.yourpackage.PropertiesUtil">
<property name="location" value="classpath:app.properties"/>
</bean>
现在,我了解到您正在尝试访问代码中的属性。Environment
抽象具备您需要的所有内容,请查看this blog post和javadoc of Environment以获取更多详细信息。