ThreadLocal実装スレッド単一インスタンス

2792 ワード

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);
		

	}
     
}