假設我們需要使用 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)工程包配置 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 項目啓動時,就會先運行這些腳本,執行初始化操作。