SpringBoot開發(fā)中的數(shù)據(jù)源詳解
1 數(shù)據(jù)源的自動配置-HikariDataSource
1 導入JDBC
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>數(shù)據(jù)庫驅動, 導入JDBC場景,官方?jīng)]有導入驅動, 因其不知道我們接下要操作什么數(shù)據(jù)庫。
默認版本:<mysql.version>8.0.22</mysql.version>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- <version>5.1.49</version>-->
</dependency>
想要修改版本
1、直接依賴引入具體版本(maven的就近依賴原則)
2、重新聲明版本(maven的屬性的就近優(yōu)先原則)
<properties>
<java.version>1.8</java.version>
<mysql.version>5.1.49</mysql.version>
</properties>2 自動配置
自動配置的類
- DataSourceAutoConfiguration : 數(shù)據(jù)源的自動配置
- 修改數(shù)據(jù)源相關的配置:spring.datasource
- 數(shù)據(jù)庫連接池的配置,是自己容器中沒有DataSource才自動配置的
- 底層配置好的連接池是:HikariDataSource
@Configuration(proxyBeanMethods = false)
@Conditional(PooledDataSourceCondition.class)
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
protected static class PooledDataSourceConfiguration{
}說明:
- DataSourceTransactionManagerAutoConfiguration: 事務管理器的自動配置
- JdbcTemplateAutoConfiguration: JdbcTemplate的自動配置,可以來對數(shù)據(jù)庫進行crud
- 可以修改這個配置項@ConfigurationProperties(prefix = “spring.jdbc”) 來修改JdbcTemplate
- @Bean@Primary JdbcTemplate;容器中有這個組件
- JndiDataSourceAutoConfiguration: jndi的自動配置
- XADataSourceAutoConfiguration: 分布式事務相關的
3 修改默認配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver4 測試
@Slf4j
@SpringBootTest
class Boot05WebAdminApplicationTests {
@Autowired
JdbcTemplate jdbcTemplate;
@Test
void contextLoads() {
// jdbcTemplate.queryForObject("select * from t_user")
// jdbcTemplate.queryForList("select * from t_user",)
Long aLong = jdbcTemplate.queryForObject("select count(*) from t_user", Long.class);
log.info("記錄總數(shù):{}",aLong);
}
}2 Druid數(shù)據(jù)源
1 druid的使用
創(chuàng)建數(shù)據(jù)源
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.17</version>
</dependency>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="20" />
<property name="initialSize" value="1" />
<property name="maxWait" value="60000" />
<property name="minIdle" value="1" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="poolPreparedStatements" value="true" />
<property name="maxOpenPreparedStatements" value="20" />
</bean>2 使用官方starter
引入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>自動配置
- 擴展配置項 spring.datasource.druid
- DruidSpringAopConfiguration.class, 監(jiān)控SpringBean的;配置項:spring.datasource.druid.aop-patterns
- DruidStatViewServletConfiguration.class, 監(jiān)控頁的配置:spring.datasource.druid.stat-view-servlet;默認開啟
- DruidWebStatFilterConfiguration.class, web監(jiān)控配置;spring.datasource.druid.web-stat-filter;默認開啟
- DruidFilterConfiguration.class}) 所有Druid自己filter的配置
private static final String FILTER_STAT_PREFIX = "spring.datasource.druid.filter.stat";
private static final String FILTER_CONFIG_PREFIX = "spring.datasource.druid.filter.config";
private static final String FILTER_ENCODING_PREFIX = "spring.datasource.druid.filter.encoding";
private static final String FILTER_SLF4J_PREFIX = "spring.datasource.druid.filter.slf4j";
private static final String FILTER_LOG4J_PREFIX = "spring.datasource.druid.filter.log4j";
private static final String FILTER_LOG4J2_PREFIX = "spring.datasource.druid.filter.log4j2";
private static final String FILTER_COMMONS_LOG_PREFIX = "spring.datasource.druid.filter.commons-log";
private static final String FILTER_WALL_PREFIX = "spring.datasource.druid.filter.wall";常見配置案例
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
druid:
aop-patterns: com.atguigu.admin.* #監(jiān)控SpringBean
filters: stat,wall # 底層開啟功能,stat(sql監(jiān)控),wall(防火墻)
stat-view-servlet: # 配置監(jiān)控頁功能
enabled: true
login-username: admin
login-password: admin
resetEnable: false
web-stat-filter: # 監(jiān)控web
enabled: true
urlPattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat: # 對上面filters里面的stat的詳細配置
slow-sql-millis: 1000
logSlowSql: true
enabled: true
wall:
enabled: true
config:
drop-table-allow: false到此這篇關于SpringBoot開發(fā)中的數(shù)據(jù)源詳解的文章就介紹到這了,更多相關SpringBoot數(shù)據(jù)源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- SpringBoot Redis配置多數(shù)據(jù)源的項目實踐
- SpringBoot多數(shù)據(jù)源配置方式以及報錯問題的解決
- SpringBoot中配置雙數(shù)據(jù)源的實現(xiàn)示例
- SpringBoot中動態(tài)數(shù)據(jù)源是實現(xiàn)與用途
- springboot添加多數(shù)據(jù)源的方法實例教程
- 詳解SpringBoot Mybatis如何對接多數(shù)據(jù)源
- springboot配置多數(shù)據(jù)源(靜態(tài)和動態(tài)數(shù)據(jù)源)
- SpringBoot配置默認HikariCP數(shù)據(jù)源
- SpringBoot集成Mybatis實現(xiàn)對多數(shù)據(jù)源訪問原理
- SpringBoot?整合數(shù)據(jù)源的具體實踐
相關文章
Mybatis -如何處理clob類型數(shù)據(jù)
這篇文章主要介紹了Mybatis 如何處理clob類型數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot+Mybatis項目使用Redis做Mybatis的二級緩存的方法
本篇文章主要介紹了SpringBoot+Mybatis項目使用Redis做Mybatis的二級緩存的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Java中compareTo()和compare()方法使用及區(qū)別詳解
這篇文章主要介紹了Java中compareTo()和compare()方法使用及區(qū)別的相關資料,compareTo()方法用于定義類的自然排序,適用于具有單一、固定排序方式的場景,compare()方法提供自定義排序的靈活性,適用于需要根據(jù)不同規(guī)則對對象進行排序的場景,需要的朋友可以參考下2025-01-01
Java實現(xiàn)TCP/IP協(xié)議的收發(fā)數(shù)據(jù)(服務端)代碼實例
這篇文章主要介紹了Java實現(xiàn)TCP/IP協(xié)議的收發(fā)數(shù)據(jù)(服務端)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11
idea?maven項目啟動項目不編譯target?文件的問題及解決方法
代碼編輯器中無編譯錯誤,通過maven 的clean 、compile、package進行各種操作也都沒問題,但是單擊綠色箭頭運行(默認會先執(zhí)行IDE本身的Build操作)卻報:程序包xxx不存在,這篇文章主要介紹了解決idea maven項目啟動項目不編譯target文件問題,需要的朋友可以參考下2023-05-05
SpringCloud Webflux過濾器增加header傳遞方式
這篇文章主要介紹了SpringCloud Webflux過濾器增加header傳遞方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
解決Spring Boot中Druid連接池“discard long time 
本文主要介紹了解決Spring Boot中Druid連接池“discard long time none received connection“警告,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03
SpringBoot整合Vue實現(xiàn)微信掃碼支付以及微信退款功能詳解
最近公司要在微信公眾號上做一個活動預報名,活動的門票等需要在微信中支付,下面這篇文章主要給大家介紹了關于SpringBoot整合Vue實現(xiàn)微信掃碼支付以及微信退款功能的相關資料,需要的朋友可以參考下2022-05-05

