动手写web框架(1): 加载配置项 发表于 2017-02-16 | 分类于 动手写web框架 定义框架所需的配置项 smart.properties在src/main/resources目录下创建名为smart.properties的文件。1234567891011jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/testjdbc.username=rootjdbc.password=root# 应用基础包名app.base_package=com.roger.demo# 应用jsp路径app.jsp_path=/WEB-INF/view# 应用静态资源路径app.asset_path=/asset/ 加载配置项ConfigHelper12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970package org.smart4j.framework.helper;import org.smart4j.framework.util.ConfigConstant;import org.smart4j.framework.util.PropsUtil;import java.util.Properties;/** * Created by Roger on 2016/11/24. */public class ConfigHelper { private static final Properties CONFIG_PROPS = PropsUtil.loadProps(ConfigConstant.CONFIG_FILE); /** * 获取JDBC驱动配置 * @return */ public static String getJdbcDriver(){ return PropsUtil.getString(CONFIG_PROPS, ConfigConstant.JDBC_DRIVER); } /** * 获取JDBC URL * @return */ public static String getJdbcUrl(){ return PropsUtil.getString(CONFIG_PROPS, ConfigConstant.JDBC_URL); } /** * 获取JDBC 用户名 * @return */ public static String getJdbcUsername(){ return PropsUtil.getString(CONFIG_PROPS, ConfigConstant.JDBC_USERNAME); } /** * 获取JDBC 密码 * @return */ public static String getJdbcPassword(){ return PropsUtil.getString(CONFIG_PROPS, ConfigConstant.JDBC_PASSWORD); } /** * 获取应用基础包名 * @return */ public static String getAppBasePackage(){ return PropsUtil.getString(CONFIG_PROPS, ConfigConstant.APP_BASE_PACKAGE); } /** * 获取应用jsp路径 * @return */ public static String getAppJspPath(){ return PropsUtil.getString(CONFIG_PROPS, ConfigConstant.APP_JSP_PATH, "/WEB-INF/view/"); } /** * 获取应用静态资源路径 * @return */ public static String getAppAssetPath(){ return PropsUtil.getString(CONFIG_PROPS, ConfigConstant.APP_ASSET_PATH, "/asset/"); }} ConfigConstant12345678910111213141516171819package org.smart4j.framework.util;/** * 提供相关配置项常量 * Created by Roger on 2016/11/23. */public interface ConfigConstant { String CONFIG_FILE = "smart.properties"; String JDBC_DRIVER = "jdbc.driver"; String JDBC_URL = "jdbc.url"; String JDBC_USERNAME = "jdbc.username"; String JDBC_PASSWORD = "jdbc.password"; String APP_BASE_PACKAGE = "app.base_package"; String APP_JSP_PATH = "app.jsp_path"; String APP_ASSET_PATH = "app.asset_path";} PropsUtil123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130package org.smart4j.framework.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.Properties;/** * Created by Roger on 2016/11/23. */public final class PropsUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PropsUtil.class); /** * 加载属性文件 * * @param fileName * @return * @throws FileNotFoundException */ public static Properties loadProps(String fileName) { Properties props = null; InputStream is = null; try { is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); if (is == null) { throw new FileNotFoundException(fileName + " file is not found"); } props = new Properties(); props.load(is); } catch (IOException e) { LOGGER.error("load properties '?' file failure", fileName, e); } finally { if (is != null) { try { is.close(); } catch (IOException e) { LOGGER.error("close input stream failure", e); } } } return props; } /** * 获取String类型属性(默认值为空字符串) * * @param props * @param key * @return */ public static String getString(Properties props, String key) { return getString(props, key, ""); } /** * 获取String类型属性(可以设置默认值) * * @param props * @param key * @param defaultValue * @return */ public static String getString(Properties props, String key, String defaultValue) { String value = defaultValue; if (props.containsKey(key)) { value = props.getProperty(key); } return value; } /** * 获取int类型属性(默认值为0) * * @param props * @param key * @return */ public static int getInt(Properties props, String key) { return getInt(props, key, 0); } /** * 获取int类型属性(可以设置默认值) * * @param props * @param key * @param defaultValue * @return */ public static int getInt(Properties props, String key, int defaultValue) { int value = defaultValue; if (props.containsKey(key)) { value = Integer.parseInt(props.getProperty(key)); } return value; } /** * 获取boolean类型属性(默认值为false) * * @param props * @param key * @return */ public static boolean getBoolean(Properties props, String key) { return getBoolean(props, key, false); } /** * 获取boolean类型属性(可以设置默认值) * * @param props * @param key * @param defaultValue * @return */ public static boolean getBoolean(Properties props, String key, boolean defaultValue) { boolean value = defaultValue; if (props.containsKey(key)) { value = Boolean.parseBoolean(props.getProperty(key)); } return value; }}