package com.itheima.util; // 定义该类属于com.itheima.util包 /** * @program: dormitorySystem * @description: 属性工具类,用于加载和获取配置文件中的属性 * @author: Joyrocky * @create: 2019-04-28 23:10 **/ import org.apache.commons.lang3.StringUtils; // 导入Apache Commons Lang库中的StringUtils工具类,用于处理字符串 import org.slf4j.Logger; // 导入SLF4J日志库中的Logger类 import org.slf4j.LoggerFactory; // 导入SLF4J日志库中的LoggerFactory类 import java.io.IOException; // 导入IOException,用于处理IO异常 import java.io.InputStreamReader; // 导入InputStreamReader,用于将字节流转换为字符流 import java.util.Properties; // 导入Properties类,用于读取和操作属性文件 public class PropertiesUtil { private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class); // 创建一个Logger对象,用于记录日志 private static Properties props; // 声明一个静态的Properties对象,用于存储加载的属性文件内容 // 静态代码块,用于加载配置文件 static { String fileName = "mmall.properties"; // 设置要加载的配置文件名称 props = new Properties(); // 实例化Properties对象 try { // 使用InputStreamReader将配置文件(位于类路径下)加载到Properties对象中,并指定字符集为UTF-8 props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName), "UTF-8")); } catch (IOException e) { // 捕获IO异常 logger.error("配置文件读取异常", e); // 记录读取配置文件异常的日志 } } /** * 获取配置文件中指定键的值 * * @param key 要获取的属性键 * @return 配置文件中指定键的值,如果值为空或未找到则返回null */ public static String getProperty(String key){ String value = props.getProperty(key.trim()); // 获取配置文件中指定键对应的值,去除键值的前后空格 if(StringUtils.isBlank(value)){ // 判断获取到的值是否为空或仅包含空白字符 return null; // 如果为空,则返回null } return value.trim(); // 如果值不为空,则去除值的前后空格并返回 } /** * 获取配置文件中指定键的值,如果值为空,则返回默认值 * * @param key 要获取的属性键 * @param defaultValue 如果配置文件中没有指定键的值,则返回该默认值 * @return 配置文件中指定键的值,如果值为空或未找到则返回默认值 */ public static String getProperty(String key, String defaultValue){ String value = props.getProperty(key.trim()); // 获取配置文件中指定键对应的值,去除键值的前后空格 if(StringUtils.isBlank(value)){ // 判断获取到的值是否为空或仅包含空白字符 value = defaultValue; // 如果值为空,则使用默认值 } return value.trim(); // 返回最终的值,去除前后空格 } }