使用dom4j读取xml连接数据库与之单例模式

时间:2021-09-05 03:36:34

使用dom4j读取xml连接数据库与之单例模式

使用dom4j读取xml连接数据库与之单例模式

使用dom4j读取xml连接数据库与之单例模式

使用dom4j读取xml ,加入jar包

dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar

public class XmlConfigReader {
//懒汉式,延迟加载
private static XmlConfigReader instance=null;
private JdbcConfig jdbcConfig;
private XmlConfigReader(){
SAXReader reader=new SAXReader();
//获取当前线程的输入流
InputStream in=Thread.currentThread().getContextClassLoader().
getResourceAsStream("mysql-config.xml");
try {
//获取xml整个文档
Document doc=reader.read(in);
//获取节点 driverName
Element driverElt=(Element) doc.selectObject("/config/db-info/driverName");
//获取节点 url
Element urlElt=(Element) doc.selectObject("/config/db-info/url");
//获取节点 userName
Element userNameElt=(Element) doc.selectObject("/config/db-info/userName");
//获取节点 password
Element passwordElt=(Element) doc.selectObject("/config/db-info/password");
String driverName=driverElt.getStringValue();
String url=urlElt.getStringValue();
String userName=userNameElt.getStringValue();
String password=passwordElt.getStringValue();
jdbcConfig=new JdbcConfig(driverName, url, userName, password);

} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

//注意用一个线程,因为单例模式有线程安全的问题,好比web我们学习的servlet,所以要加synchronized 
public static synchronized XmlConfigReader getInstance(){
if(instance==null){
instance=new XmlConfigReader();
}


return instance;
}
public JdbcConfig getJdbcConfig(){
return jdbcConfig;
}
public static void main(String[] args) {

//测试了一下,没问题
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();

System.out.println(jdbcConfig);
}