DBUtil中使用spring配置的数据源

1. 由于项目中使用的ssH框架,而部分程序中又有直接使用DBUtil工具类直接获取jdbc连接的地方,为了统一由spring管理数据源,想在DBUtil中也只接使用spring初始化好的数据源

2.spring配置的数据源如下(使用了dbcp连接池,需要2个jar包支持commons-dbcp.jar和commons-pool.jar)

<!-- 1、配置dbcp,数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>tiger</value>
        </property>
        <property name="initialSize" value="10"/>
        <property name="minIdle" value="5"/>
        <property name="maxIdle" value="10"/>
        <property name="maxWait" value="60000"/>
        <property name="removeAbandonedTimeout" value="180"/>
        <property name="removeAbandoned" value="true"/>
    </bean>

3.DBUtil类

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/*
 * 获取数据库连接的工具类
 */
public class DBUtil
{
    private static DataSource ds = null;
    public static Connection conn;
    //加载驱动
    static
    {
        try {
            ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
            ds = (DataSource) ac.getBean("dataSource");    
            
        } catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
    //获得连接
    public static Connection getConnection() throws SQLException
    {
        return ds.getConnection();
    }
    /*
     * 关闭数据库连接
     */
    public static void close(ResultSet rs,Statement st,Connection conn)
    {
        if(rs!=null)
        { try {  
            rs.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }finally{  
            if(st!=null){  
                try {  
                    st.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }finally{  
                    if(conn!=null){  
                        try {  
                            conn.close();  
                        } catch (SQLException e) {  
                            e.printStackTrace();  
                        }  
                    }  
                }  
            }  
        }  
        }
    }
    public static void main(String[] args) throws SQLException
    {
        System.out.println(DBUtil.getConnection());
    }
    
}
原文地址:https://www.cnblogs.com/david-rui/p/3513726.html