package util;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.util.Properties;public class ConnectionFactory { private static String driver; private static String dburl; //这四个变量用于保存从配置文件中读取到的配置信息 private static String user; private static String password; private static final ConnectionFactory factory=new ConnectionFactory(); //定义了一个ConnectionFactory成员变量 private Connection conn=null; static{ //静态代码块,用于初始化属性,可以为属性赋值,静态代码块只会执行一次 Properties prop=new Properties();//Properties可以用来保存属性文件中的键值对 try { InputStream in=ConnectionFactory.class.getClassLoader() .getResourceAsStream("dbconfig.propertise");//用于获取属性文件中的内容 //首先获取当前属性的类加载器,然后使用类加载器中的getResourStream方法 //读取属性中的内容,这个方法会将属性中的内容读取到输入流中 prop.load(in); //从输入流中读取属性列表,也就是键值对列表 } catch (Exception e) { System.out.println("===配置文件读取错误===="); } driver=prop.getProperty("driver"); dburl=prop.getProperty("dburl"); user=prop.getProperty("user"); password=prop.getProperty("password"); } private ConnectionFactory(){ //构造函数 } public static ConnectionFactory getInstance(){ return factory; } //用来获取ConnectionFactory对象实例 public Connection makeConnection(){ try { Class.forName(driver); conn=DriverManager.getConnection(dburl,user,password); } catch (Exception e) { e.printStackTrace(); } return conn; }}
package util;import java.sql.Connection;import java.sql.SQLException;public class ConnectionFactoryTest { public static void main(String[] args) throws SQLException { ConnectionFactory cf=ConnectionFactory.getInstance(); Connection conn=cf.makeConnection(); System.out.println(conn.getAutoCommit()); }}