說說在 Spring Boot 中如何配置數據源

假設我們需要使用 Oracle 數據庫,那麼首先需要在 pom.xml 中引用 Oracle 數據庫驅動包:

<properties>
       <oracle.version>12.2.0.1</oracle.version>
       ...
</properties>

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>${oracle.version}</version>
</dependency>

1 直接配置

在 application.yml 中配置數據源參數,形如:

spring:  
datasource:
        url: jdbc:oracle:thin:@192.168.4.15:1599:orcl
        username: deniro
        password: 2020

可以不用顯式指定驅動類名,因爲Spring Boot 會自動根據數據庫 URL 地址推算出來。當然也可以顯式指定:
driver-class-name: oracle.jdbc.OracleDriver

如果在類路徑中存在 Tomcat 的 JDBC 連接池,那麼 Spring Boot 就會直接使用 Tomcat 的連接池。否則, Spring Boot 會在類路徑下尋找以下連接池: HikariCP 或 Commons DBCP 2。

HikariCP是日本程序員開源的一個數據庫連接池組件,據說代碼非常輕量,並且速度也非常快。根據官方提供的數據,在i7,開啓32個線程32個連接的情況下,進行隨機數據庫讀寫操作,HikariCP的速度是現在常用的C3P0數據庫連接池的數百倍。在SpringBoot2.0中,官方也是推薦使用HikariCP。

2 通過 JNDI 配置

也可以通過JNDI來配置數據源。這種方式擁有以下優點:

  1. 工程包中可以不必包含與數據源相關的具體參數信息;
  2. 方便運維人員定期修改數據庫密碼;
  3. 替換連接池的工作交給容器處理。

(1)工程包配置 JNDI

修改工程包的 application.yml:

spring:
  datasource:
    jndi-name: XXX_DATASOURCE

(2)Tomcat 配置 JNDI

修改 Tomcat 的 conf/context.xml:

<Resource name="XXX_DATASOURCE" auth="Container" type="javax.sql.DataSource" factory="com.alibaba.druid.pool.DruidDataSourceFactory" username="deniro" password="2020" driverClassName="oracle.jdbc.OracleDriver" url=" jdbc:oracle:thin:@192.168.4.15:1599:orcl" filters="stat" connectionProperties="druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2000" useGlobalDataSourceStat="true" defaultTransactionIsolation="READ_COMMITTED" validationQuery="select 1 from dual" removeAbandoned="false" logAbandoned="true" removeAbandonedTimeout="1800" maxActive="20" initialSize="5" maxWait="60000" minIdle="10" timeBetweenEvictionRunsMillis="60000" minEvictableIdleTimeMillis="300000" testWhileIdle="true" testOnBorrow="false" testOnReturn="false" asyncInit="true"/>

示例使用了 Druid 連接池。
注意:如果在 Tomcat 容器側修改了默認連接池方案,那麼就必須把相應的依賴包放入Tomcat 安裝目錄的 lib 文件夾中。

3 配置初始化腳本

初始化腳本分爲兩部分,一個是表結構初始化;另一個是數據初始化。它們分別配置在 schema 與 data 選項中。形如:

spring:
    # 數據源
  datasource:
    schema:
      - classpath:sql/model1-schema.sql
      - classpath:sql/model2-schema.sql
    data:
      - classpath:sql/model1.sql

在 yml 格式中,列表項使用的是 - 加上空格作爲前綴。
這些腳本文件需要放置在 src/resources/sql 文件夾下。

Spring Boot 項目啓動時,就會先運行這些腳本,執行初始化操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章