在Springmvc中获取properties属性
2016-02-24 09:49
519 查看
一些关键的属性一般都会拿出来作为配置,比如数据库连接等。在springmvc中也提供了获取property的类,比如@Value来获取。我接触spring很浅,基本上都是百度的问题解决方法,百度到@value的用法,按照说明尝试了两次都失败了。正巧身边又有合适的方法,于是便没有去深入研究为什么失败,这个留在以后研究。下面就是获取代码:
源码来自:https://github.com/thinkgem/jeesite
源码来自:https://github.com/thinkgem/jeesite
package com.demo.common.utils; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import java.io.IOException; import java.io.InputStream; import java.util.NoSuchElementException; import java.util.Properties; /** * Properties文件载入工具类. 可载入多个properties文件, 相同的属性在最后载入的文件中的值将会覆盖之前的值,但以System的Property优先. * Created by Administrator on 2016/2/23. */ public class PropertiesLoader { private static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class); private static ResourceLoader resourceLoader = new DefaultResourceLoader(); private final Properties properties; public PropertiesLoader(String... resourcesRaths) { properties = loadProperties(resourcesRaths); } public Properties getProperties(){ return properties; } /** * 取出property,但以System的property优先,取不到返回空字符串 */ private String getValue(String key){ String systemProperty = System.getProperty(key); if (systemProperty!=null){ return systemProperty; } if (properties.containsKey(key)){ return properties.getProperty(key); } return ""; } /** * 取出String类型的Property,System的优先 * @throws NoSuchElementException */ public String getProperty(String key){ String value = getValue(key); if (value==null){ throw new NoSuchElementException(); } return value; } /** * 取出String类型的Property,System的优先,null则返回默认值 */ public String getProperty(String key,String defaultValue){ String value = getValue(key); return value!=null?value:defaultValue; } /** * 取出Integer类型的Property,System优先 * @throws NoSuchElementException */ public Integer getInteger(String key){ String value = getValue(key); if (value==null){ throw new NoSuchElementException(); } return Integer.valueOf(value); } /** * 取出Integer类型的Property,System优先,null则返回默认值 */ public Integer getInteger(String key,Integer defaultValue){ String value = getValue(key); return value!=null?Integer.valueOf(value):defaultValue; } /** * 取出Double类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常. */ public Double getDouble(String key) { String value = getValue(key); if (value == null) { throw new NoSuchElementException(); } return Double.valueOf(value); } /** * 取出Double类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常 */ public Double getDouble(String key, Integer defaultValue) { String value = getValue(key); return value != null ? Double.valueOf(value) : defaultValue; } /** * 取出Boolean类型的Property,但以System的Property优先.如果都为Null抛出异常,如果内容不是true/false则返回false. */ public Boolean getBoolean(String key) { String value = getValue(key); if (value == null) { throw new NoSuchElementException(); } return Boolean.valueOf(value); } /** * 取出Boolean类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容不为true/false则返回false. */ public Boolean getBoolean(String key, boolean defaultValue) { String value = getValue(key); return value != null ? Boolean.valueOf(value) : defaultValue; } /** * 载入多个文件,文件路径使用spring resource格式 * @param resourcesRaths * @return */ private Properties loadProperties(String[] resourcesRaths) { Properties props = new Properties(); for (String location : resourcesRaths) { logger.debug("Loading properties file from:" + location); InputStream is = null; try { Resource resource = resourceLoader.getResource(location); is = resource.getInputStream(); props.load(is); } catch (IOException e) { logger.info("Could not load properties from path:{},{}",location,e.getMessage()); e.printStackTrace(); }finally { IOUtils.closeQuietly(is); } } return props; } }
相关文章推荐
- JDk根目录 4000 下文件内容
- spring框架读取配置文件信息
- Java中实现Comparable和Comparator对象比较
- Spring的aop介绍
- Eclipse web项目断点调试
- JAVASE基础 Item -- File类详解
- NDK开发之Eclipse环境配置
- Java WebService 简单实例
- javaweb实战之商城项目开发(三)
- Spring的源头基于构件的软件开发(CBD-Component-Based Development)
- 启动eclipse报Version 1.6.0_65 of the JVM is not suitable for this product.
- 用eclipse创建java web工程 (最详细的讲解)
- spring scheduler 定时器
- Java:String和Date、Timestamp之间的转换
- PAT 1004. 成绩排名 (20);java实现
- 堆,优先队列以及堆排序
- javaweb实战之商城项目开发(二)
- javaweb实战之商城项目开发(一)
- 一些实用的java工具包jar
- java io流