论坛首页 Java企业应用论坛

spring中获得属性文件键值对,在程序中使用

浏览 5884 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (12) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-12-27  
!-- 	<context:property-placeholder -->
<!-- 		location="/WEB-INF/jdbc-config/jdbc.properties" /> -->
		<bean id="propertyConfigurer"  class="com.chinaGPS.nss.util.MyPropertyPlaceholderConfigurer">
		        <property name="locations">
		            <list>
		                <value>/WEB-INF/jdbc-config/httpRemote.properties</value>
		            </list>
		        </property>
		 </bean>

 

package com.chinaGPS.nss.util;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import com.chinaGPS.nss.constant.SystemConst;

/**加载属性类
 * @author zhz
 *
 */
public class MyPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {

  private Map<String, String> resolvedProps;//将属性保存起来

  @Override
  protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess,
      Properties props) throws BeansException {
      super.processProperties(beanFactoryToProcess, props);
      resolvedProps = new HashMap<String, String>();
      for (Object key : props.keySet()) {
          String keyStr = key.toString();
          
          if(StringUtils.equals(keyStr, "auto_craw"))
          {
        	  String tmp = parseStringValue(props.getProperty(keyStr), props,new HashSet());
        	  if(StringUtils.equalsIgnoreCase(tmp, "on"))
  				SystemConst.AUTOCRAW  = "on";		
  			if(StringUtils.equalsIgnoreCase(tmp, "off"))
  				SystemConst.AUTOCRAW="off";
  			else
  				continue;
          }
//          resolvedProps.put(keyStr, parseStringValue(props.getProperty(keyStr), props,
//                  new HashSet()));
      }
  }
}

 

   发表时间:2011-12-29  
这正是我最近想要的

不过

我想问一下

如果 这个类 已经是 spring  bean了

如何不用extends PropertyPlaceholderConfigurer 就可以使用参数?
0 请登录后投票
   发表时间:2011-12-30  
飞天奔月 写道
这正是我最近想要的

不过

我想问一下

如果 这个类 已经是 spring  bean了

如何不用extends PropertyPlaceholderConfigurer 就可以使用参数?

这个可能要依赖spring中的相关类获取键值对,目前我没有解决,而且PropertyPlaceholderConfigurer 是spring2.x的类,在spring3.x 中是已过时的。。。
0 请登录后投票
   发表时间:2011-12-30  
不需要酱紫用。分明用${value}就可以直接注入进去。
我记得在官方文档上就有。浅尝辄止的人太多了。
0 请登录后投票
   发表时间:2011-12-30  
依赖注入呀
给这个类MyPropertyPlaceholderConfigurer  定义几个属性,一注入就进去了,何毕这么麻烦。。
0 请登录后投票
   发表时间:2011-12-31  
aiyust070 写道
依赖注入呀
给这个类MyPropertyPlaceholderConfigurer  定义几个属性,一注入就进去了,何毕这么麻烦。。


你说的对,但是你如何在代码中获取键值对呢?我目前只知道可以在配置文件中用${value}获得。
0 请登录后投票
   发表时间:2011-12-31  
EXvision 写道
不需要酱紫用。分明用${value}就可以直接注入进去。
我记得在官方文档上就有。浅尝辄止的人太多了。

${value} 这种方式,我用的想吐了。。。。而且只能在xml配置文件中生效吧。。。。,可以在java代码中使用,那就是牛了。。。
0 请登录后投票
   发表时间:2011-12-31  
qq123zhz 写道
aiyust070 写道
依赖注入呀
给这个类MyPropertyPlaceholderConfigurer  定义几个属性,一注入就进去了,何毕这么麻烦。。


你说的对,但是你如何在代码中获取键值对呢?我目前只知道可以在配置文件中用${value}获得。


你想说的是这篇文章的内容吧。http://jackyrong.iteye.com/blog/1330946
0 请登录后投票
   发表时间:2011-12-31  
config.properties:
archive.workdir=D:/tmp

xml:
<util:properties id="config" location="classpath:/config.properties"/>

java:
@Value("#{config['archive.workdir']}")
private String workdir
0 请登录后投票
   发表时间:2011-12-31   最后修改:2011-12-31
qq123zhz 写道
EXvision 写道
不需要酱紫用。分明用${value}就可以直接注入进去。
我记得在官方文档上就有。浅尝辄止的人太多了。

${value} 这种方式,我用的想吐了。。。。而且只能在xml配置文件中生效吧。。。。,可以在java代码中使用,那就是牛了。。。

这句话有语病!前面是肯定语句,后面怎么又变成疑问句呢?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics