这里介绍两种在代码中获取properties文件属性的方法。

使用@Value注解获取properties文件属性:

1.因为在下面要用到Spring的<util />配置,所以,首先要在applicationContext.xml中引入其对应的命名空间:

xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/util
            http://www.springframework.org/schema/util/spring-util-3.0.xsd"

2.创建properties文件并增加内容:

#搜索服务地址
solrURL=http://localhost:8080/solr 

3.在applicationContext.xml中加入以下的配置:

<!-- 添加注解驱动 -->
<mvc:annotation-driven />
<!-- 注解默认扫描的包路径 -->
<context:component-scan base-package="com.wdcloud.solr" /> <!-- 载入配置文件 -->
<util:properties id="constants" location="classpath:config/statics.properties"/>

4.使用@Value注解,在java类中获取properties文件中的值(这里constants对应上面的id):

  @Value("#{constants.solrURL}")
public String testUrl; @RequestMapping(value = "/test", method = RequestMethod.GET)
@ResponseBody
public Result queryTest() {
System.out.println("testUrl:" + testUrl);
}

测试结果:

使用@Value获取属性值的方法有一个问题,我每用一次配置文件中的值,就要声明一个局部变量,即不能使用static和final来修饰变量。而第二种方法可以解决这个问题。

重写PropertyPlaceholderConfigurer:

1.通常我们使用spring的PropertyPlaceholderConfigurer类来读取配置信息,这里我们需要重写它:

public class PropertyPlaceholder extends PropertyPlaceholderConfigurer {

    private static Map<String, String> propertyMap;

    @Override
protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props)
throws BeansException {
super.processProperties(beanFactoryToProcess, props);
propertyMap = new HashMap<String, String>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
propertyMap.put(keyStr, value);
}
} // static method for accessing context properties
public static String getProperty(String name) {
return propertyMap.get(name);
}
}

2.在applicationContext.xml中加入以下的配置:

  <!-- 加载properties文件配置信息 -->
<bean scope="singleton" id="propertyConfigurer"
class="com.wdcloud.solr.util.PropertyPlaceholder">
<property name="locations">
<list>
<value>classpath*:config/statics.properties</value>
</list>
</property>
</bean>

3.使用PropertyPlaceholder.getProperty方法获取属性值:

  public static final String solrURL = PropertyPlaceholder.getProperty("solrURL");

    @RequestMapping(value = "/test", method = RequestMethod.GET)
@ResponseBody
public Result queryTest() {
System.out.println(solrURL);
}

测试结果:

参考:

http://1358440610-qq-com.iteye.com/blog/2090955

http://www.cnblogs.com/Gyoung/p/5507063.html

最新文章

  1. iframe高度自适应(同域)
  2. Nginx实现多域名证书HTTPS
  3. MSSQL 2012安装报错之0x858C001B
  4. PLSQL查询字段为科学计数法,修正显示
  5. windows下git识别大小写配置
  6. 怎样查看MySQL是否区分大小写
  7. minio-dotnet --云存储服务
  8. 【Python】 最简单的web服务
  9. Executing Raw SQL Queries using Entity Framework
  10. Ajax效果
  11. opencv数据结构-MAT结构详解
  12. leetcode第五题--Longest Palindromic Substring
  13. [国嵌攻略][173][BOA嵌入式服务器移植]
  14. BZOJ 1079: [SCOI2008]着色方案(巧妙的dp)
  15. 修改apache默认主页,重定向404页面
  16. Android学习Scroller(五)——具体解释Scroller调用过程以及View的重绘
  17. Java中数据类型相互转化
  18. webgl,threejs教程、笔记
  19. Python 一篇学会多线程
  20. bzoj千题计划237:bzoj1492: [NOI2007]货币兑换Cash

热门文章

  1. zstack快速安装文档
  2. selenium启动谷歌所遇到的问题
  3. Exchange 2003服务器中如何在公司资料夹中设置共享行事历
  4. 关于有时候导入maven项目时候报错(有红色叹号,类中导入的包提示&quot;the import java.util cannot be resolve,&quot;)
  5. 一个多maven项目聚合的实例
  6. commons.httpclient-3.X.jar 和 httpclient-4.x.jar是个什么关系?
  7. Python 标准库 ConfigParser 模块 的使用
  8. keras基础-优化策略:mini-batch gradient decent
  9. ZooKeeper系列(1) 整体介绍(转)
  10. sqoop操作之ORACLE导入到HIVE