SpringBoot開(kāi)發(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ù)庫(kù)驅(qū)動(dòng), 導(dǎo)入JDBC場(chǎng)景,官方?jīng)]有導(dǎo)入驅(qū)動(dòng), 因其不知道我們接下要操作什么數(shù)據(jù)庫(kù)。
默認(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、直接依賴(lài)引入具體版本(maven的就近依賴(lài)原則)
2、重新聲明版本(maven的屬性的就近優(yōu)先原則)
<properties>
<java.version>1.8</java.version>
<mysql.version>5.1.49</mysql.version>
</properties>2 自動(dòng)配置
自動(dòng)配置的類(lèi)
- DataSourceAutoConfiguration : 數(shù)據(jù)源的自動(dòng)配置
- 修改數(shù)據(jù)源相關(guān)的配置:spring.datasource
- 數(shù)據(jù)庫(kù)連接池的配置,是自己容器中沒(méi)有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{
}說(shuō)明:
- DataSourceTransactionManagerAutoConfiguration: 事務(wù)管理器的自動(dòng)配置
- JdbcTemplateAutoConfiguration: JdbcTemplate的自動(dòng)配置,可以來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行crud
- 可以修改這個(gè)配置項(xiàng)@ConfigurationProperties(prefix = “spring.jdbc”) 來(lái)修改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.Driver4 測(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
引入依賴(lài)
<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)控頁(yè)的配置:spring.datasource.druid.stat-view-servlet;默認(rèn)開(kāi)啟
- DruidWebStatFilterConfiguration.class, web監(jiān)控配置;spring.datasource.druid.web-stat-filter;默認(rèn)開(kāi)啟
- 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";常見(jiàn)配置案例
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 # 底層開(kāi)啟功能,stat(sql監(jiān)控),wall(防火墻)
stat-view-servlet: # 配置監(jiān)控頁(yè)功能
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開(kāi)發(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ò)問(wèn)題的解決
- 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ù)源訪問(wèn)原理
- SpringBoot?整合數(shù)據(jù)源的具體實(shí)踐
相關(guān)文章
部署springboot項(xiàng)目到云服務(wù)器的兩種方式(jar+war)
本文主要介紹了部署springboot項(xiàng)目到云服務(wù)器的兩種方式,主要介紹了jar和war兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Java中定時(shí)器Timer和TimerTask使用方法全解析
這篇文章主要介紹了Java中定時(shí)器Timer和TimerTask使用方法的相關(guān)資料,如何創(chuàng)建定時(shí)任務(wù)、安排任務(wù)執(zhí)行、取消任務(wù)以及實(shí)現(xiàn)任務(wù)的暫停和恢復(fù)功能,通過(guò)這些功能,可以靈活地控制任務(wù)的執(zhí)行,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
java面向?qū)ο缶幊填?lèi)的內(nèi)聚性分析
高內(nèi)聚、低耦合是軟件設(shè)計(jì)中非常關(guān)鍵的概念。在面向?qū)ο蟪绦蛟O(shè)計(jì)中類(lèi)的劃分時(shí),類(lèi)的內(nèi)聚性越高,其封裝性越好,越容易復(fù)用2021-10-10
idea2020.1.3 手把手教你創(chuàng)建web項(xiàng)目的方法步驟
這篇文章主要介紹了idea 2020.1.3 手把手教你創(chuàng)建web項(xiàng)目的方法步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Java設(shè)置Excel數(shù)據(jù)驗(yàn)證的示例代碼
數(shù)據(jù)驗(yàn)證是Excel 2013版本中,數(shù)據(jù)功能組下面的一個(gè)功能。本文將通過(guò)Java程序代碼演示數(shù)據(jù)驗(yàn)證的設(shè)置方法及結(jié)果,感興趣的可以了解一下2022-05-05
SpringBoot項(xiàng)目啟動(dòng)時(shí)就加載數(shù)據(jù)到內(nèi)存實(shí)現(xiàn)
文章主要討論了在SpringBoot項(xiàng)目中,對(duì)于不經(jīng)常變動(dòng)的配置型數(shù)據(jù),可以在項(xiàng)目啟動(dòng)時(shí)直接加載到內(nèi)存中,以減少不必要的IO消耗,使用Maven管理后端依賴(lài),并實(shí)現(xiàn)了服務(wù)層和控制器層2026-04-04
mybatis plus的3種查詢(xún)方式(小結(jié))
這篇文章主要介紹了mybatis plus的3種查詢(xún)方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
mybatis實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了mybatis實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
詳解IntelliJ IDEA 中如何配置多個(gè)jdk版本即(1.7和1.8兩個(gè)jdk都可用)
這篇文章主要介紹了詳解IntelliJ IDEA 中如何配置多個(gè)jdk版本即(1.7和1.8兩個(gè)jdk都可用),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-11-11

