Spring在代码中获取properties文件属性
这里介绍两种在代码中获取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
Spring在代码中获取properties文件属性的更多相关文章
- Spring在代码中获取bean的几种方式
方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObj ...
- Spring在代码中获取bean的几种方式(转:http://www.dexcoder.com/selfly/article/326)
方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObj ...
- Spring在代码中获取bean的几种方式(转)
获取spring中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplica ...
- java代码中获取进程process id(转)
另一方面,线程ID=进程ID+内部线程对象ID并不成立, 参考: blog.csdn.net/heyetina/article/details/6633901 如何在java代码中获取进 ...
- spring mvc controller中获取request head内容
spring mvc controller中获取request head内容: @RequestMapping("/{mlid}/{ptn}/{name}") public Str ...
- Java代码中获取Json的key值
测试json字符串: {"access_token":"hkbQl5o_l67dZ7_vJRATKBwTLk9Yj5QyMuOJThAr8Baj0xWf4wxW1p4ym ...
- Android在代码中获取应用签名
平时都是用AS敲命令获取签名信息...还没有在代码中获取过签名~ 也算是老编程了,没做过这个稍微有点尴尬...本着有好轮子就用的原则,网上找了几篇博客,这块内容已经很完善了,我也没什么可以优化的... ...
- java如何从一段html代码中获取图片的src路径
java如何从一段html代码中获取图片的src路径 package com.cellstrain.icell.Test; import java.util.ArrayList;import java ...
- 在ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串
1.在<connectionStrings> 标签里添加连接 <connectionStrings> <add name="ConnectionName&q ...
随机推荐
- 基于TLS(线程局部存储)的高效timelog实现
什么是timelog? 我们在分析程序性能的时候,会加入的一些logging信息记录每一部分的时间信息 timelog模块的功能就是提供统一的接口来允许添加和保存logging 我们正在用的timel ...
- JVM 之:Class 类文件结构
类文件结构 Class 文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件中,中间没有添加任何分隔符,这使得整个 Class 文件中存储的内容几乎全部都是 ...
- Arrays、ArrayUtils 区别
Arrays java.util 包提供的静态类:java.util.Arrays 此静态类专门用来操作array ,提供搜索.排序.复制等静态方法. ArrayUtils apache 提供的类:o ...
- led的驱动及测试程序
一.驱动源码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> # ...
- java 字符串String
在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象的方法: 只要是双引号标 ...
- [转]C# 系统应用之鼠标模拟技术及自动操作鼠标
原文网址: C# 系统应用之鼠标模拟技术及自动操作鼠标 游戏程序的操作不外乎两种——键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C# ...
- IE下的Firebug——IE WebDeveloper js debug
原文地址:http://blog.csdn.net/wangbin1986/article/details/6837285 对于大部分做前端设计者而言应该都使用过Firefox浏览器下一款调试网站的扩 ...
- position和margin的绝对定位和相对定位
电脑桌面清理干净之后,果然快了很多,桌面上的东西会占用内存,导致电脑变慢,以前我看到表姐的电脑桌面堆满了东西,我就在心里默默的鄙视不懂玩电脑的人,现在我竟然也养成了这种坏毛病..保存东西的时候放在桌面 ...
- vlc的应用之二:vlc的ActiveX及cab
请移步https://higoge.github.io/,所有下载资料在那个博客都能找到.谢谢. http://jeremiah.blog.51cto.com/ 2009-05-14补充:8. Act ...
- Asterisk重要App
elastix82*CLI> core show application SoftHangup -= Info about application 'SoftHangup' =- [Synop ...