乐知付加密服务平台

如果你有资源, 平台可以帮你实现内容变现, 无需搭建知识付费服务平台。

点击访问官方网站 https://lezhifu.cc

扫码关注公众号 乐知付加密服务平台-微信公众号
读取配置文件工具类 | chenzuoli's blog

读取配置文件工具类

我们在编程过程中,尤其是应用程序,需要经常更改的配置参数或者某些使用较多的固定值,我们可以把它提取出来,放到一个配置文件中,当我们需要修改这个值时,就可以做到不重新发布应用,或者不更改许多的代码,这样,即降低了程序代码的后期维护成本,也降低了程序代码的耦合性,这是我们每个合格的程序员应该具备的基本技能。
下面来介绍一个读取配置文件的工具类。

maven项目引入依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.pipilong.czl.util;

import org.apache.log4j.Logger;
import java.io.File;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
* User: chenzuoli
* Date: 2018/3/20
* Time: 15:13
* Description: 读取配置文件工具类
* Ps: Properties
*/

public class PropertiesUtils {
private static Logger logger = Logger.getLogger(PropertiesUtils.class);
private static Properties props;
private static String configHome = System.getenv("pesdk_home");
private static String configFilePath = configHome + File.separator + "conf" + File.separator + "db.properties";

static {
readProperties(configFilePath);
logger.info("配置文件加载成功。");
}

public static void main(String[] args) {
logger.info(get("psqlPassword"));
}

/**
* 加载配置文件
*
* @param fileName
*/
private static void readProperties(String fileName) {
try {
props = new Properties();
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(new File(fileName)), "utf-8");
props.load(inputStreamReader);
} catch (Exception e) {
logger.error("加载配置文件失败!");
e.printStackTrace();
}
}

/**
* 根据key读取对应的value
*
* @param key
* @return
*/
public static String get(String key) {
return props.getProperty(key);
}

/**
* 得到所有的配置信息
*
* @return
*/
public static Map<?, ?> getAll() {
Map<String, String> map = new HashMap<String, String>();
Enumeration<?> enu = props.propertyNames();
while (enu.hasMoreElements()) {
String key = (String) enu.nextElement();
String value = props.getProperty(key);
map.put(key, value);
}
return map;
}

使用方法

首先在本地环境变量中配置一个环境变量,名称为pesdk_home,当然你自己也可以随便定义,然后在该环境变量对应的路径下创建conf文件夹,再在conf文件夹下创建db.properties文件,你的配置项就可以添加到该配置文件中了,使用的时候,直接调用get方法,传入响应的key就可以获得value,赶紧试试吧。

ps

如果大家在使用logger打印不出任何东西的时候,可能原因是你没有配置log4j的打印等级,这里就粘贴一下log4j的配置文件吧。这个配置文件的功能是error及fatal级日志打印到一个文件中,info及warn打印到另一个文件中,分日期打印。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=DFTSystemWeb2.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:sss z}] %5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:sss z}] %5p %c{1}:%L - %m%n
log4j.logger.org.eclipse.jetty=INFO
log4j.logger.org.springframework=INFO
log4j.logger.com.mchange=ERROR
log4j.logger.org.hibernate=INFO
#log4j.logger.org.hibernate.type=trace
log4j.logger.com.tulando.common.filter.MethodProfileAspect=info,ProfileAspect
log4j.appender.ProfileAspect=org.apache.log4j.RollingFileAppender
log4j.appender.ProfileAspect.File=api-profile.log
log4j.appender.ProfileAspect.MaxFileSize=1024KB
log4j.appender.ProfileAspect.MaxBackupIndex=5
log4j.appender.ProfileAspect.Append=true
log4j.appender.ProfileAspect.layout=org.apache.log4j.PatternLayout
log4j.appender.ProfileAspect.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

整个方式到这里就配置完成了,如果在使用的过程中,有什么问题,或者有值得优化的地方,请联系我chenzuoli709@gmail.com.

书山有路勤为径,学海无涯苦作舟。

欢迎关注微信公众号:【程序员写书】
程序员写书

喜欢宠物的朋友可以关注:【电巴克宠物Pets】
电巴克宠物

一起学习,一起进步。

-------------本文结束感谢您的阅读-------------