一些关键的属性一般都会拿出来作为配置,比如数据库连接等。在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 }
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有