package util;
import java.io.InputStream;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;
public class DBCPUtil {
private static DataSource dataSource;//数据库对象
//static静态块,程序运行后该块存在于方法区,且只执行一次,可被其它线程共享
//此作用是节省内存开销
static{
try{
//Class.forName("内路径")返回的是一个类,详情请参考http://www.cnblogs.com/springcsc/archive/2010/03/03/1676977.html
Class.forName("com.mysql.jdbc.Driver").newInstance();//加载jdbc数据库驱动
//使用DBCPUtil的类加载器(每个类都有一个class对象)获得对象,获得读入流,读取文件
InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//获取properties对象(已key,value形式存在的对象)
Properties prop = new Properties();
prop.load(in);//装载读取到的properties文件信息
//获取数据源
dataSource = BasicDataSourceFactory.createDataSource(prop);
}catch(Exception e){
try {
throw new Exception("获取数据源失败");
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
//返回数据源
//应为static静态块是在类初始化时加载的,所以只要执行成功一次,该数据源
//就一直连接着数据库,直到程序结束
public static DataSource getDataSource(){
return dataSource;
}
}