从配置文件或数据库中读取信息并缓存
来源:互联网 发布:东莞大岭山美工招聘 编辑:程序博客网 时间:2024/05/19 18:36
在项目中将一些常用的不变的信息可以缓存起来,这样可以减少内存的使用率,提高性能。比如说就数据库连接的相关信息等,可以用单例模式第一次进行连接的时候将数据库连接的相关信息缓存再单例对象中。
首先建个.properties文件,存放数据库连接信息,内容如下:
#数据库配置driver_class = oracle.jdbc.driver.OracleDriverurl= jdbc:oracle:thin:@192.168.20.188:1521:orclusername = qwszptpassword = rxqwszpt
创建两个单例类,一个用于缓存数据库连接信息,一个用于缓存查询的结果集。
package wbb.java.GetConfiguration.singleton;import java.util.Map;/** * User: wbb * Date: 14-8-11 * Time: 上午11:12 * 缓存数据库连接信息的单例 */public class DbConfig { private Map<String,String> sysConfig; private static DbConfig instance = null; public static synchronized DbConfig getInstance() { if (instance == null) { instance = new DbConfig(); } return instance; } //清楚对象中缓存的内容 public void clearSysConfig() { sysConfig = null; } public Map<String, String> getSysConfig() { return sysConfig; } public void setSysConfig(Map<String, String> sysConfig) { this.sysConfig = sysConfig; }}
package wbb.java.GetConfiguration.singleton;import java.util.Map;/** * User: wbb * Date: 14-8-11 * Time: 上午11:25 * 缓存查询信息的单例 */public class QueryConfig { private Map<String, String> queryConfig; private static QueryConfig instance = null; public static synchronized QueryConfig getInstance() { if(instance == null) { instance = new QueryConfig(); } return instance; } //清楚对象中缓存的内容 public void clearQueryConfig() { queryConfig = null; } public Map<String, String> getQueryConfig() { return queryConfig; } public void setQueryConfig(Map<String, String> queryConfig) { this.queryConfig = queryConfig; }}
创建一个读取或写入系统配置文件的工具类。
package wbb.java.GetConfiguration.utils;import wbb.java.GetConfiguration.singleton.DbConfig;import wbb.java.GetConfiguration.singleton.QueryConfig;import java.io.IOException;import java.io.InputStream;import java.sql.*;import java.util.*;/** * Created with IntelliJ IDEA. * User: wbb * Date: 14-8-11 * Time: 上午11:05 * 读取或写入系统配置文件的工具类 */public class SystemConfigUtil { /** * 从配置文件中读取配置信息 * * @return 配置信息properties * @throws IOException */ public static Properties getProperties() throws IOException { Properties prop = new Properties(); InputStream in = Object.class.getResourceAsStream("/config.properties"); prop.load(in); return prop; } /** * 将数据库配置信息写入到dbConfig中 * * @param config 数据库配置信息 */ public static void setDBConfig(Properties config) { Map<String, String> configMap = new HashMap<String, String>(); //迭代配置文件中的配置,并放到map中 for (Enumeration e = config.propertyNames(); e.hasMoreElements(); ) { String key = (String) e.nextElement(); String value = config.getProperty(key); configMap.put(key, value); } //将配置写入到单例中 DbConfig dbConfig = DbConfig.getInstance(); dbConfig.setSysConfig(configMap); } /** * 读取查询配置,并写入到queryConfig中 */ public static void setQueryConfig(ResultSet rs) throws SQLException { String key = null; String value = null; Map queryConfigMap = new HashMap(); while (rs.next()) { key = rs.getString("DM"); value = rs.getString("PZZ"); queryConfigMap.put(key, value); System.out.println("代码为:" + key + "对应的配置值是:" + value); } //将查询配置信息写入queryConfig QueryConfig queryConfig = QueryConfig.getInstance(); //清除原有对象 queryConfig.clearQueryConfig(); //构造新对象 queryConfig.setQueryConfig(queryConfigMap); }}
创建测试类
package wbb.java.GetConfiguration;import wbb.java.GetConfiguration.singleton.DbConfig;import wbb.java.GetConfiguration.utils.SystemConfigUtil;import java.io.IOException;import java.sql.*;import java.util.Map;import java.util.Properties;/** * User: wbb * Date: 14-8-11 * Time: 上午11:03 * 测试从配置文件中读取 */public class GetConfigurationFromProperties { public static void main(String[] args) { Properties properties = null; /** * 从配置文件中读取配置信息,并缓存到DbConfig单例对象中 */ try { //读取配置文件 properties = SystemConfigUtil.getProperties(); //将数据库配置写入(缓存)到dbconfig SystemConfigUtil.setDBConfig(properties); //获取数据库连接信息的实例 Map<String, String> dbConfig = DbConfig.getInstance().getSysConfig(); /** * 从数据库中读取信息并缓存到QueryConfig单例对象中 */ //连接数据库 Connection conn = null; Class.forName(dbConfig.get("driver_class")); conn = DriverManager.getConnection(dbConfig.get("url"), dbConfig.get("username"), dbConfig.get("password")); //获取执行sql语句的对象 Statement stmt =null; stmt = conn.createStatement(); //执行sql语句,获取结果集 ResultSet rs=null; rs=stmt.executeQuery("select * from t_pz_xtpz"); //将查询信息写入(缓存)到queryconfig SystemConfigUtil.setQueryConfig(rs); } catch (IOException e) { e.printStackTrace(); System.out.println("读取配置文件失败"); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("没有找到驱动文件"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } }}
0 0
- 从配置文件或数据库中读取信息并缓存
- 001-Springboot从数据库读取配置文件并启动Redis作为缓存服务器
- Java中框架的概念,以及从配置文件中读取配置信息并加载指定类
- 从配置文件读取信息
- 手写从配置文件中读取信息并进行解析的工具类
- 从文件中读取信息 并处理
- 从config文件中读取数据库信息
- 初学C#,一个从数据库中读取信息并分页问题
- 从JSP读取配置文件信息
- 从配置文件读取相应的信息加载到应用程序中
- 使用Spring中Src下 -context.xml : 用资源文件夹保存数据库的链接信息 并在配置文件里读取
- Java中读取配置文件中的信息,并利用配置文件中的信息创建对象
- Android从SD卡中加载图片或读取信息
- 从摄像头或视频文件中读取视频流并显示
- 从摄像头或视频文件中读取视频流并显示
- Spring中读取配置文件信息
- 用ASP.NET 处理图象:从数据库中读取图象,并在图象上加上版权信息
- 从配置文件里读取配置信息
- Cocos2d-x 地图行走的实现3:A*算法
- 准备写的小网站
- MVP视频播放器简介(一)
- voj1781 ex_gcd
- Android开发之MdiaPlayer详解
- 从配置文件或数据库中读取信息并缓存
- mysql sequence
- Java初学者都必须理解的六大问题
- 用命令行方式关闭CentOS防火墙
- clang_complete vim 简单配置
- jquery如何判断checkbox(复选框)是否被选中
- 自底向上的合并排序
- cocos2dx场景切换内存问题
- 软件测试之黑盒测试常用方法汇总