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