zoukankan      html  css  js  c++  java
  • 在Springmvc中获取properties属性

    一些关键的属性一般都会拿出来作为配置,比如数据库连接等。在springmvc中也提供了获取property的类,比如@Value来获取。我接触spring很浅,基本上都是百度的问题解决方法,百度到@value的用法,按照说明尝试了两次都失败了。正巧身边又有合适的方法,于是便没有去深入研究为什么失败,这个留在以后研究。下面就是获取代码:

    源码来自:https://github.com/thinkgem/jeesite

      1 package com.demo.common.utils;
      2 
      3 import org.apache.commons.io.IOUtils;
      4 import org.slf4j.Logger;
      5 import org.slf4j.LoggerFactory;
      6 import org.springframework.core.io.DefaultResourceLoader;
      7 import org.springframework.core.io.Resource;
      8 import org.springframework.core.io.ResourceLoader;
      9 
     10 import java.io.IOException;
     11 import java.io.InputStream;
     12 import java.util.NoSuchElementException;
     13 import java.util.Properties;
     14 
     15 /**
     16  * Properties文件载入工具类. 可载入多个properties文件, 相同的属性在最后载入的文件中的值将会覆盖之前的值,但以System的Property优先.
     17  * Created by Administrator on 2016/2/23.
     18  */
     19 public class PropertiesLoader {
     20     private static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class);
     21     private static ResourceLoader resourceLoader = new DefaultResourceLoader();
     22     private final Properties properties;
     23 
     24     public PropertiesLoader(String... resourcesRaths) {
     25         properties = loadProperties(resourcesRaths);
     26     }
     27 
     28     public Properties getProperties(){
     29         return properties;
     30     }
     31 
     32     /**
     33      * 取出property,但以System的property优先,取不到返回空字符串
     34      */
     35     private String getValue(String key){
     36         String systemProperty = System.getProperty(key);
     37         if (systemProperty!=null){
     38             return systemProperty;
     39         }
     40         if (properties.containsKey(key)){
     41             return properties.getProperty(key);
     42         }
     43         return "";
     44     }
     45 
     46     /**
     47      * 取出String类型的Property,System的优先
     48      * @throws NoSuchElementException
     49      */
     50     public String getProperty(String key){
     51         String value = getValue(key);
     52         if (value==null){
     53             throw new NoSuchElementException();
     54         }
     55         return value;
     56     }
     57 
     58     /**
     59      * 取出String类型的Property,System的优先,null则返回默认值
     60      */
     61     public String getProperty(String key,String defaultValue){
     62         String value = getValue(key);
     63         return value!=null?value:defaultValue;
     64     }
     65 
     66     /**
     67      * 取出Integer类型的Property,System优先
     68      * @throws NoSuchElementException
     69      */
     70     public Integer getInteger(String key){
     71         String value = getValue(key);
     72         if (value==null){
     73             throw new NoSuchElementException();
     74         }
     75         return Integer.valueOf(value);
     76     }
     77         /**
     78      * 取出Integer类型的Property,System优先,null则返回默认值
     79      */
     80     public Integer getInteger(String key,Integer defaultValue){
     81         String value = getValue(key);
     82 
     83         return value!=null?Integer.valueOf(value):defaultValue;
     84     }
     85 
     86     /**
     87      * 取出Double类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常.
     88      */
     89     public Double getDouble(String key) {
     90         String value = getValue(key);
     91         if (value == null) {
     92             throw new NoSuchElementException();
     93         }
     94         return Double.valueOf(value);
     95     }
     96 
     97     /**
     98      * 取出Double类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常
     99      */
    100     public Double getDouble(String key, Integer defaultValue) {
    101         String value = getValue(key);
    102         return value != null ? Double.valueOf(value) : defaultValue;
    103     }
    104 
    105     /**
    106      * 取出Boolean类型的Property,但以System的Property优先.如果都为Null抛出异常,如果内容不是true/false则返回false.
    107      */
    108     public Boolean getBoolean(String key) {
    109         String value = getValue(key);
    110         if (value == null) {
    111             throw new NoSuchElementException();
    112         }
    113         return Boolean.valueOf(value);
    114     }
    115 
    116     /**
    117      * 取出Boolean类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容不为true/false则返回false.
    118      */
    119     public Boolean getBoolean(String key, boolean defaultValue) {
    120         String value = getValue(key);
    121         return value != null ? Boolean.valueOf(value) : defaultValue;
    122     }
    123 
    124 
    125 
    126     /**
    127      * 载入多个文件,文件路径使用spring resource格式
    128      * @param resourcesRaths
    129      * @return
    130      */
    131     private Properties loadProperties(String[] resourcesRaths) {
    132         Properties props = new Properties();
    133 
    134         for (String location : resourcesRaths) {
    135             logger.debug("Loading properties file from:" + location);
    136             InputStream is = null;
    137             try {
    138                 Resource resource = resourceLoader.getResource(location);
    139                 is = resource.getInputStream();
    140                 props.load(is);
    141             } catch (IOException e) {
    142                 logger.info("Could not load properties from path:{},{}",location,e.getMessage());
    143                 e.printStackTrace();
    144             }finally {
    145                 IOUtils.closeQuietly(is);
    146             }
    147         }
    148         return props;
    149     }
    150 }
  • 相关阅读:
    nginx 403 forbidden 二种原因
    【Spring-AOP-学习笔记-3】@Before前向增强处理简单示例
    【Oracle学习笔记-5--】集合操作之union,intersect和minus操作
    【Oracle学习笔记-2】Oracle基础术语解析
    【数据库设计-1.2】主键的设计
    【数据库设计-1.1】关系的实现
    【Servlet和JSP-学习-1】基础知识
    【Spring学习笔记-MVC-17】Spring MVC之拦截器
    【Spring学习笔记-MVC-1.0】Spring MVC架构介绍
    【Spring学习笔记-MVC-16】Spring MVC之重定向-解决中文乱码
  • 原文地址:https://www.cnblogs.com/woshimrf/p/5211216.html
Copyright © 2011-2022 走看看