ThreadLocal实现线程单实例

package com.zjlolife.drp.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionManager {

	//ThreadLocal通常是在类中的static字段见API
    public static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
	
	public static Connection getConnection() {
		Connection conn = threadLocal.get();
		if(conn==null) {
			 try {
				 JdbcInfo info = ConfigReader.getInstance().getInfo();
				Class.forName(info.getDriverName());
				conn = DriverManager.getConnection(info.getUrl(), info.getUsername(), info.getPassword());
				threadLocal.set(conn);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return conn;
	}
	
	public static void setAutoCommit(Connection conn,boolean b) {
	
	try {
		conn.setAutoCommit(b);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();

	}
	
	
	}
}

加载XML文件的类ConfigReader:

package com.zjlolife.drp.util;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ConfigReader {
	 private Document doc;
	 
	 private JdbcInfo info;
	 
	 private static String itemDao;
	 
    

	public static ConfigReader instance = new ConfigReader();
     
     private ConfigReader() {
    	  try {
			doc = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"));
			Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
			Element urlElt = (Element)doc.selectObject("/config/db-info/url");
			Element usernameElt = (Element)doc.selectObject("/config/db-info/username");
			Element passwordElt = (Element)doc.selectObject("/config/db-info/password");
			info = new JdbcInfo();
			info.setDriverName(driverNameElt.getStringValue());
			info.setUrl(urlElt.getStringValue());
			info.setUsername(usernameElt.getStringValue());
			info.setPassword(passwordElt.getStringValue());
			
			Element itemDaoElt = (Element) doc.selectObject("/config/item-dao");
			itemDao = itemDaoElt.getStringValue();
			
			
			
			
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
     }
     
     public static ConfigReader getInstance() {
    	 return instance;
     }

	public JdbcInfo getInfo() {
		return info;
	}

	 public static String getItemDao() {
			return itemDao;
		}

		public void setItemDao(String itemDao) {
			this.itemDao = itemDao;
		}
	public static void main(String[] args) {
		JdbcInfo info = ConfigReader.getInstance().getInfo();
		System.out.println(info);
		

	}
     
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值