ITKeyword,专注技术干货聚合推荐

注册 | 登录

如何在Spring容器中加载自定义的配置文件

chen88358323 分享于 2015-12-15

推荐:自定义Servlet使用Spring容器功能

 如果想要在自己所定义的Servlet类中使用Spring的容器功能,则也可以使用org.springframework.web.context.ContextLoaderListener,例如在web.xml中使用<listene

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

原文转自:http://www.iitshare.com/spring-container-load-custom-configuration-files.html 写作背景 最近做的项目当中遇到这么一个问题,需要将一些参数配置在一个properties文件中,在项目当中动态获取,频繁使用,由于是频繁使用,为了提高性能,我们就想到在项目初始化的时候将其加载到内存里面,类似加载Spring的配置文件一样,我们最后采用的方式是在Tomcat启动加载数据库配置文件的时候,同时加载我们定义的project.properties配置文件,下面将具体的实现方式写出来,和大家共享下 自定义配置文件 配置文件名为:project.properties,内容如下: # 是否开启逻辑删除project_del.filter.on=falseproject_domain=http://www.366go.cn/ 修改Spring配置文件 之前代码: <beanid="propertyConfigurer"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<propertyname="locations">

<list>

<value>classpath:dbinfo.properties</value>

</list>

</property></bean> 修改后的配置文件 <beanid="propertyConfigurer"

class="com.hisun.core.util.CustomizedPropertyPlaceholderConfigurer">

<propertyname="locations">

<list>

<value>classpath:dbinfo.properties</value>

<value>classpath:project.properties</value>

</list>

</property></bean> 加入了classpath:project.properties,其为自定义的配置文件 将PropertyPlaceholderConfigurer类修改为自定义类CustomizedPropertyPlaceholderConfigurer, PropertyPlaceholderConfigurer类的具体作用可以查资料这块儿不做详细介绍 注意下:这个configurer类获取的是所有properties的属性map,如果希望处理某个properties文件,需要在properties中 做一个命名区别,然后在加载的时候,根据key的前缀,进行获取。 定义CustomizedPropertyPlaceholderConfigurer类 类的具体内容为下, importjava.util.HashMap;importjava.util.Map;importjava.util.Properties; importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.config.ConfigurableListableBeanFactory;importorg.springframework.beans.factory.config.PropertyPlaceholderConfigurer; publicclass CustomizedPropertyPlaceholderConfigurer extendsPropertyPlaceholderConfigurer {

privatestatic Map ctxPropertiesMap;

@Override

protectedvoid processProperties(ConfigurableListableBeanFactory beanFactoryToProcess,

Properties props)throws BeansException {

super.processProperties(beanFactoryToProcess, props);

ctxPropertiesMap =new HashMap();

for(Object key : props.keySet()) {

String keyStr = key.toString();

if(keyStr.startsWith("project_")){

String value = props.getProperty(keyStr);

ctxPropertiesMap.put(keyStr, value);

}

}

}

publicstatic Object getContextProperty(String name) {

returnctxPropertiesMap.get(name);

}} 定义获取配置文件中值的类SpringPropertiesUtil 类的具体内容如下: importorg.springframework.beans.BeansException;importorg.springframework.context.ApplicationContext;importorg.springframework.context.ApplicationContextAware;importorg.springframework.stereotype.Component; /** * Spring-PropertiesUtil工具类 -获取属性值 * */@Componentpublicclass SpringPropertiesUtil implementsApplicationContextAware {

publicstatic final String KEY = "propertyConfigurer";

privatestatic ApplicationContext applicationContext;

publicvoid setApplicationContext(ApplicationContext applicationContext)

throwsBeansException {

SpringPropertiesUtil.applicationContext = applicationContext;

}

publicstatic ApplicationContext getApplicationContext() {

returnapplicationContext;

}

/**

* 获取配置文件中的内容

*

* @param keyName

* @return

*/

publicstatic String parseStr(String keyName) {

CustomizedPropertyPlaceholderConfigurer cp = (CustomizedPropertyPlaceholderConfigurer) applicationContext

.getBean(KEY);

returncp.getContextProperty(keyName).toString();

}

/**

* 获取配置文件中的内容

*

* @param keyName

* @return

*/

publicstatic int parseInt(String keyName) {

CustomizedPropertyPlaceholderConfigurer cp = (CustomizedPropertyPlaceholderConfigurer) applicationContext

.getBean(KEY);

returnInteger.parseInt(cp.getContextProperty(keyName).toString());

}

/**

* 获取配置文件中的内容

*

* @param keyName

* @return

*/

publicstatic double parseDouble(String keyName) {

CustomizedPropertyPlaceholderConfigurer cp = (CustomizedPropertyPlaceholderConfigurer) applicationContext

.getBean(KEY);

returnDouble.parseDouble(cp.getContextProperty(keyName).toString());

}} 这样,在项目当中就能够方便快速的获取properties文件中配置的参数 如SpringPropertiesUtil.parseStr(“content”)

推荐:Spring中加载xml配置文件的方式

项目需要使用载入多个xml,方便起见,转载一篇文章作为记录 转自:http://javapub.iteye.com/blog/751772 Spring中加载xml配置文件的方式,我总结的有6种, xml是

原文转自:http://www.iitshare.com/spring-container-load-custom-configuration-files.html 写作背景 最近做的项目当中遇到这么一个问题,需要将一些参数配置在一个properties文件中,在项目当

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。