java--数据库,文件配置连接,自定义连接池

import java.util.ResourceBundle;

public class Mtest7Demo {
        //使用properties配置文件完成数据库的连接
        /*
         * 开发中获得连接的4个参数(驱动,URL,用户名,密码)通常都存在配置文件中,方便后期维护,
         * 程序如果需要更换数据库,只需要修改配置文件即可。
         * (个人认为如果单独的创建一个类,包含上面的四种参数,在性质上并无差别)
         * 注意点:
         * 1 文件位置,任意,建议src下;
         * 2文件名称:任意,扩展名为properties
         * 3文件内容:一行一组数据,格式是"key=value"
         */
        /*
         * 加载配置文件:ResourceBundle对象
         * ResourceBundle提供getBundle()方法用于只提供properties文件即可,
         * 之后使用getString(key)通过key获得value的值
         */
        public  static String driver;//驱动
        public  static String url;//路径
        public  static String user;//用户名
        public static String password;//密码
        //配置文件只需要被加载一次。
        static {//注意需要放在static中;
                //通过key获取value的值
          ResourceBundle bundle=ResourceBundle.getBundle("db");
          driver=bundle.getString("jdbc.driver");
          url=bundle.getString("jdbc.url");
          user=bundle.getString("jdbc.user");
          password=bundle.getString("jdbc.password");
        }
        //如上完成properties文件配置的封装
        
        
}

  

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.LinkedList;

public class Mtest6Demo {
        static LinkedList<Connection> pool = new LinkedList<Connection>();
        
        //使用连接池完成数据库的连接
        //本测试首先是自定义的连接池
        //1初始化连接池中的连接
        //本部分是连接池的初始化设置
                static {
                        Mtest7Demo mt=new Mtest7Demo();
                        String driver=mt.driver;
                        String url=mt.url;
                        String user=mt.user;
                        String password=mt.password;
                        try {
                                //1注册驱动
                                Class.forName(driver);
                                for(int i=0;i<5;i++)
                                {
                                 //2获得连接
                                        Connection conn = DriverManager.getConnection(url,user,password);
                                //3将连接添加到连接池中
                                        pool.add(conn);
                                }
                                
                        } catch (Exception e) {
                                // TODO: handle exception
                                e.printStackTrace();
                           }
                }
                
                
        //获得连接
        public static Connection getConnection() {
                Connection conn=null;
                try {
                        //1如果池中有连接
                        if(!pool.isEmpty())
                        {
                                //2每一个连接Connection,只能提供给当前一个线程使用,必须进行移除操作
                                conn=pool.remove(0);
                                //3返回刚刚获得的连接
                                return conn;
                        }else {
                                //如果没有连接,等待100毫秒,然后继续
                                Thread.sleep(100);
                                return getConnection();
                        }
                        
                } catch (Exception e) {
                        // TODO: handle exception
                        e.printStackTrace();
                }
                return conn;
        }
        
        //归还连接
        public static void release(Connection conn) {
                try {
                        if(conn!=null)
                        {
                                conn.close();
                                pool.add(conn);
                        }
                } catch (Exception e) {
                        // TODO: handle exception
                        e.printStackTrace();
                }
        }

}

  

db.propreties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/study?useUnicode=true&characterEncoding=utf8
jdbc.user=root
jdbc.password=root