SpringBoot開發(fā)中的數(shù)據(jù)源詳解
1 數(shù)據(jù)源的自動(dòng)配置-HikariDataSource
1 導(dǎo)入JDBC
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency>
數(shù)據(jù)庫驅(qū)動(dòng), 導(dǎo)入JDBC場(chǎng)景,官方?jīng)]有導(dǎo)入驅(qū)動(dòng), 因其不知道我們接下要操作什么數(shù)據(jù)庫。
默認(rèn)版本:<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 自動(dòng)配置
自動(dòng)配置的類
- DataSourceAutoConfiguration : 數(shù)據(jù)源的自動(dòng)配置
- 修改數(shù)據(jù)源相關(guān)的配置:spring.datasource
- 數(shù)據(jù)庫連接池的配置,是自己容器中沒有DataSource才自動(dòng)配置的
- 底層配置好的連接池是: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: 事務(wù)管理器的自動(dòng)配置
- JdbcTemplateAutoConfiguration: JdbcTemplate的自動(dòng)配置,可以來對(duì)數(shù)據(jù)庫進(jìn)行crud
- 可以修改這個(gè)配置項(xiàng)@ConfigurationProperties(prefix = “spring.jdbc”) 來修改JdbcTemplate
- @Bean@Primary JdbcTemplate;容器中有這個(gè)組件
- JndiDataSourceAutoConfiguration: jndi的自動(dòng)配置
- XADataSourceAutoConfiguration: 分布式事務(wù)相關(guān)的
3 修改默認(rèn)配置
spring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: root driver-class-name: com.mysql.jdbc.Driver
4 測(cè)試
@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>
自動(dòng)配置
- 擴(kuò)展配置項(xiàng) spring.datasource.druid
- DruidSpringAopConfiguration.class, 監(jiān)控SpringBean的;配置項(xiàng):spring.datasource.druid.aop-patterns
- DruidStatViewServletConfiguration.class, 監(jiān)控頁的配置:spring.datasource.druid.stat-view-servlet;默認(rèn)開啟
- DruidWebStatFilterConfiguration.class, web監(jiān)控配置;spring.datasource.druid.web-stat-filter;默認(rèn)開啟
- 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: # 對(duì)上面filters里面的stat的詳細(xì)配置 slow-sql-millis: 1000 logSlowSql: true enabled: true wall: enabled: true config: drop-table-allow: false
到此這篇關(guān)于SpringBoot開發(fā)中的數(shù)據(jù)源詳解的文章就介紹到這了,更多相關(guān)SpringBoot數(shù)據(jù)源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot Redis配置多數(shù)據(jù)源的項(xiàng)目實(shí)踐
- SpringBoot多數(shù)據(jù)源配置方式以及報(bào)錯(cuò)問題的解決
- SpringBoot中配置雙數(shù)據(jù)源的實(shí)現(xiàn)示例
- SpringBoot中動(dòng)態(tài)數(shù)據(jù)源是實(shí)現(xiàn)與用途
- springboot添加多數(shù)據(jù)源的方法實(shí)例教程
- 詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源
- springboot配置多數(shù)據(jù)源(靜態(tài)和動(dòng)態(tài)數(shù)據(jù)源)
- SpringBoot配置默認(rèn)HikariCP數(shù)據(jù)源
- SpringBoot集成Mybatis實(shí)現(xiàn)對(duì)多數(shù)據(jù)源訪問原理
- SpringBoot?整合數(shù)據(jù)源的具體實(shí)踐
相關(guān)文章
Mybatis -如何處理clob類型數(shù)據(jù)
這篇文章主要介紹了Mybatis 如何處理clob類型數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06SpringBoot+Mybatis項(xiàng)目使用Redis做Mybatis的二級(jí)緩存的方法
本篇文章主要介紹了SpringBoot+Mybatis項(xiàng)目使用Redis做Mybatis的二級(jí)緩存的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Java中compareTo()和compare()方法使用及區(qū)別詳解
這篇文章主要介紹了Java中compareTo()和compare()方法使用及區(qū)別的相關(guān)資料,compareTo()方法用于定義類的自然排序,適用于具有單一、固定排序方式的場(chǎng)景,compare()方法提供自定義排序的靈活性,適用于需要根據(jù)不同規(guī)則對(duì)對(duì)象進(jìn)行排序的場(chǎng)景,需要的朋友可以參考下2025-01-01Java實(shí)現(xiàn)TCP/IP協(xié)議的收發(fā)數(shù)據(jù)(服務(wù)端)代碼實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)TCP/IP協(xié)議的收發(fā)數(shù)據(jù)(服務(wù)端)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11idea?maven項(xiàng)目啟動(dòng)項(xiàng)目不編譯target?文件的問題及解決方法
代碼編輯器中無編譯錯(cuò)誤,通過maven 的clean 、compile、package進(jìn)行各種操作也都沒問題,但是單擊綠色箭頭運(yùn)行(默認(rèn)會(huì)先執(zhí)行IDE本身的Build操作)卻報(bào):程序包xxx不存在,這篇文章主要介紹了解決idea maven項(xiàng)目啟動(dòng)項(xiàng)目不編譯target文件問題,需要的朋友可以參考下2023-05-05SpringCloud Webflux過濾器增加header傳遞方式
這篇文章主要介紹了SpringCloud Webflux過濾器增加header傳遞方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Spring計(jì)時(shí)器StopWatch使用示例
這篇文章主要介紹了Spring計(jì)時(shí)器StopWatch使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05解決Spring Boot中Druid連接池“discard long time 
本文主要介紹了解決Spring Boot中Druid連接池“discard long time none received connection“警告,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03SpringBoot整合Vue實(shí)現(xiàn)微信掃碼支付以及微信退款功能詳解
最近公司要在微信公眾號(hào)上做一個(gè)活動(dòng)預(yù)報(bào)名,活動(dòng)的門票等需要在微信中支付,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合Vue實(shí)現(xiàn)微信掃碼支付以及微信退款功能的相關(guān)資料,需要的朋友可以參考下2022-05-05