資料庫連接池選擇演算法
在預設情況下, 資料庫連接可以使用DataSource池進行自動設定。下面是選取一個特定實現的演算法: 由於Tomcat資料來源串連池的效能和並發, 在tomcat可用時, 我們總是優先使用它。 如果HikariCP可用, 我們將使用它。 如果Commons DBCP可用, 我們將使用它, 但在生產環境不推薦使用它。 最後, 如果Commons DBCP2可用, 我們將使用它。
如果你使用spring-boot-starter-jdbc或spring-boot-starter-data-jpa 'starter POMs', 你將會自動擷取對tomcat-jdbc的依賴。
註:其他的串連池可以手動設定。 如果你定義自己的DataSource bean,自動設定不會發生。 配置一個預設的資料來源
DataSource配置通過外部設定檔的spring.datasource.*屬性控制。樣本中,你可能會在application.properties中聲明下面的片段:
spring.datasource.url=jdbc:mysql://localhost/testspring.datasource.username=dbuserspring.datasource.password=dbpassspring.datasource.driver-class-name=com.mysql.jdbc.Driver
其他可選的配置可以查看DataSourceProperties。同時注意你可以通過spring.datasource.*配置任何DataSource實現相關的特定屬性:具體參考你使用的串連池實現的文檔。
註:既然Spring Boot能夠從大多數資料庫的url上推斷出driver-class-name,那麼你就不需要再指定它了。 對於一個將要建立的DataSource串連池,我們需要能夠驗證Driver是否可用, 所以我們會在做任何事情之前檢查它。 比如, 如果你設定spring.datasource.driverClassName=com.mysql.jdbc.Driver,然後這個類就會被載入。 配置dbcp2資料來源
# 資料來源配置spring.datasource.url=jdbc:mysql://localhost:3306/ssb_testspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.username=rootspring.datasource.password=root#串連池配置spring.datasource.type=org.apache.commons.dbcp2.BasicDataSourcespring.datasource.dbcp2.max-wait-millis=10000spring.datasource.dbcp2.min-idle=5spring.datasource.dbcp2.initial-size=5spring.datasource.dbcp2.validation-query=SELECT xspring.datasource.dbcp2.connection-properties=characterEncoding=utf8
spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource:指定使用那個串連池,預設使用tomcate-jdbc串連池。
dbcp2配置詳解http://blog.csdn.net/xiaolyuh123/article/details/73331093 測試資料來源代碼
package com.xiaolyuh;import net.minidev.json.JSONObject;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.ApplicationContext;import org.springframework.http.MediaType;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.test.web.servlet.MockMvc;import org.springframework.test.web.servlet.MvcResult;import org.springframework.test.web.servlet.setup.MockMvcBuilders;import org.springframework.web.context.WebApplicationContext;import javax.sql.DataSource;import java.util.HashMap;import java.util.Map;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;@RunWith(SpringRunner.class)@SpringBootTestpublic class DataSourceTests { @Autowired ApplicationContext applicationContext; @Autowired DataSourceProperties dataSourceProperties; @Test public void testDataSource() throws Exception { // 擷取配置的資料來源 DataSource dataSource = applicationContext.getBean(DataSource.class); // 查看配置資料來源資訊 System.out.println(dataSource); System.out.println(dataSource.getClass().getName()); System.out.println(dataSourceProperties); }} 源碼
https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
spring-boot-student-data-jpa工程