单例设计模式中使用dom4j来完成(数据库配置文件)xml的解析,并完成数据库的连接
本文主要简述的内容有单例设计模式、dom4j解析xml文件(这里解析的数据库的配置文件)、通过解析出来的配置信息完成数据库的连接。
1、首先要看的是单例设计模式
单例设计模式的实现有两种:饿汉式(预先加载)、懒汉式(延迟加载),下面分别来看这两种实现方式。
(1)、饿汉式(预先加载)
public class Singleton{private static Singleton instance = new Singleton();private Singleton(){}public static synchronized Singleton getInstance(){return instance;} }(2)懒汉式(延迟加载)
public class Singleton{private static Singleton instance = null;private Singleton(){}public static synchronized Singleton getInstance(){if(instance==null){ instance = new Singleton();}return instance;} }
2、使用dom4j来完成数据库配置文件的解析
给出下面这个数据库的配置文件sys-config.xml
<?xml version="1.0" encoding="UTF-8"?><config><db-info><driver>oracle.jdbc.driver.OracleDriver</driver><url>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</url><user>username</user><password>password</password></db-info></config>完成解析的java类:
(1)、保存数据库jdbc配置信息的模型类JdbcConfig.java
package org.ml.drp.util;/** * 用于保存数据库连接时的jdbc参数 * * @author MuLing * */public class JdbcConfig {private String DbDriver;private String DbUrl;private String DbUser;private String DbPass;public String getDbDriver() {return DbDriver;}public void setDbDriver(String dbDriver) {DbDriver = dbDriver;}public String getDbUrl() {return DbUrl;}public void setDbUrl(String dbUrl) {DbUrl = dbUrl;}public String getDbUser() {return DbUser;}public void setDbUser(String dbUser) {DbUser = dbUser;}public String getDbPass() {return DbPass;}public void setDbPass(String dbPass) {DbPass = dbPass;}@Overridepublic String toString() {return "JdbcConfig [DbDriver=" + DbDriver + ", DbUrl=" + DbUrl+ ", DbUser=" + DbUser + ", DbPass=" + DbPass + "]";}}(2)、解析数据库配置文件的工具类XmlConfigReader.java,这里使用单例模式完成,采用的是懒汉式。
package org.ml.drp.util;import java.io.InputStream;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;/** * 用于解析xml文件 * @author MuLing * */public class XmlConfigReader { private JdbcConfig jdbcConfig = null;private static XmlConfigReader instance = null; private XmlConfigReader(){SAXReader reader = new SAXReader();//取得SAXReader的对象InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");//得到输入流对象jdbcConfig = new JdbcConfig();Document doc = null;try {doc = reader.read(input); //进行读取} catch (DocumentException e) { e.printStackTrace(); } //取得对应的节点对象 Element driverEle = (Element)doc.selectObject("/config/db-info/driver");Element urlEle = (Element)doc.selectObject("/config/db-info/url");Element userEle = (Element)doc.selectObject("/config/db-info/user");Element passwordEle = (Element)doc.selectObject("/config/db-info/password"); jdbcConfig.setDbDriver(driverEle.getStringValue());jdbcConfig.setDbUrl(urlEle.getStringValue());jdbcConfig.setDbUser(userEle.getStringValue());jdbcConfig.setDbPass(passwordEle.getStringValue()); }public static synchronized XmlConfigReader getInstance(){if(instance==null){instance = new XmlConfigReader();}return instance;}public JdbcConfig getJdbcConfig(){return this.jdbcConfig;}}
3、根据解析出了的配置信息完成数据库的连接
下面是一个完成数据库连接操作的测试工具类DbUtil.java
package org.ml.drp.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/** * 封装数据库常用操作类 * @author MuLing * */public class DbUtil { /** * 取得数据库的连接 * @return */public static Connection getConnection(){Connection conn = null;//取得数据库连接字符串JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();String DBDRIVER = jdbcConfig.getDbDriver();String DBURL = jdbcConfig.getDbUrl();String DBUSER = jdbcConfig.getDbUser();String DBPASS = jdbcConfig.getDbPass();//1:注册驱动try {Class.forName(DBDRIVER);} catch (ClassNotFoundException e) { e.printStackTrace();}//2:获取连接try {conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);} catch (SQLException e) { e.printStackTrace();}//3:返回数据库连接return conn;}//测试数据库的连接是否成功public static void main(String args[]){ System.out.println(DbUtil.getConnection());}}
以上完成了单例模式下使用dom4j来读取数据库配置文件,并实现数据库的连接操作。
如果需要了解更多关于dom4j的使用,可以进入这儿http://blog.csdn.net/cselmu9/article/details/7843120进行查看。