首頁 > 軟體

Spring設定資料來源流程與作用詳解

2022-08-23 14:01:45

一、資料來源的作用

  • 資料來源(連線池)是提高程式效能出現的
  • 事先範例化資料來源,初始化部分連線資源
  • 使用連線資源時從資料來源中獲取
  • 使用完畢後將連線資源歸還給資料來源

常見的資料來源(連線池):DBCP、C3P0、BoneCP、Druid等

在JavaSE中的JDBC就是通過資料來源獲取資料庫中的資料

二、資料來源手動建立

1、資料來源的開發步驟

匯入資料來源的座標和資料庫的座標

    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.39</version>
    </dependency>

建立資料來源物件

設計資料來源的基本連線資料

使用資料來源獲取連線資源和歸還連線資源

2、手動建立c3p0資料來源

@Test
    public void test01() throws PropertyVetoException, SQLException {
        //建立資料來源
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        //設定資料庫連線引數
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/atm");
        dataSource.setUser("root");
        dataSource.setPassword("123456");
        //獲取連線物件
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

3、手動建立druid資料來源

    @Test
    public void test02() throws SQLException {
        //建立資料來源
        DruidDataSource dataSource = new DruidDataSource();
        //設定資料庫連線引數
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/atm");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        //獲取連線物件
        DruidPooledConnection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

4、通過properties組態檔建立連線池

上述手動建立資料來源的過程中顯而易見出現一個問題,那就是程式碼的維護性較差,倘若需要修改資料庫的資料,當java程式進行編寫就變成了位元組碼檔案,修改位元組碼檔案是比較困難的,不利於系統的維護

通過使用properties組態檔來建立連線池就可以較好地解決此類問題

在resources資料夾下建立相對應的properties組態檔,在裡面編寫資料庫連線引數

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/atm
jdbc.username=root
jdbc.password=123456

在java程式中獲取properties組態檔的資料,並給它設定資料庫連線引數

    @Test
    public void test3() throws Exception {
        //載入類路徑下的jdbc.properties
        ResourceBundle jdbc = ResourceBundle.getBundle("jdbc");
        //建立資料來源
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        //設定資料庫連線引數
        dataSource.setDriverClass(jdbc.getString("jdbc.driver"));
        dataSource.setJdbcUrl(jdbc.getString("jdbc.url"));
        dataSource.setUser(jdbc.getString("jdbc.username"));
        dataSource.setPassword(jdbc.getString("jdbc.password"));
        //獲取連線物件
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

5、通過spring設定資料來源

在spring框架中,spring框架的容器可以完成DataSource的建立

  • DataSource有無引數構造方法,而spring預設是通過無參構造方法範例化物件
  • DataSource要想使用通過set方法來設定資料庫連線資訊,spring是可以通過set方法進行字串的注入
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="driverClass" value="com.mysql.jdbc.Driver"/>
	<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
	<property name="user" value="root"/>
	<property name="password" value="123456"/>
</bean>

設定完spring的組態檔的,就可以在java程式中獲取bean容器返回的DataSource物件

@Test
    public void test4() throws SQLException {
        ApplicationContext app = new ClassPathXmlApplicationContext("applicatonContext.xml");
        DataSource dataSource = (DataSource) app.getBean("dataSource");
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

6、通過spring抽取jdbc組態檔

在實際開發過程中,並不習慣在spring組態檔中把資料庫的相關引數寫死,而是將它寫在properties組態檔中,spring組態檔通過抽取properties組態檔從而獲取資料庫相關引數

要先抽取properties組態檔的相關資料,首先要引入context名稱空間和約束路徑

名稱空間:xmlns:context=“http://www.springframework.org/schema/context

約束路徑:http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

    <context:property-placeholder location="jdbc.properties"/>
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

erty name=“jdbcUrl” value=" j d b c . u r l " / > < p r o p e r t y n a m e = " u s e r " v a l u e = " {jdbc.url}"/> <property name="user" value=" jdbc.url"/><propertyname="user"value="{jdbc.username}"/>

> **相關引數就像javaweb中的EL表達是那些編寫,即可獲取相對應的資料**

到此這篇關於Spring設定資料來源流程與作用詳解的文章就介紹到這了,更多相關Spring設定資料來源內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com