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ù)源的具體實踐
相關文章
部署springboot項目到云服務器的兩種方式(jar+war)
本文主要介紹了部署springboot項目到云服務器的兩種方式,主要介紹了jar和war兩種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
Java中定時器Timer和TimerTask使用方法全解析
這篇文章主要介紹了Java中定時器Timer和TimerTask使用方法的相關資料,如何創(chuàng)建定時任務、安排任務執(zhí)行、取消任務以及實現(xiàn)任務的暫停和恢復功能,通過這些功能,可以靈活地控制任務的執(zhí)行,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-04-04
idea2020.1.3 手把手教你創(chuàng)建web項目的方法步驟
這篇文章主要介紹了idea 2020.1.3 手把手教你創(chuàng)建web項目的方法步驟,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08
SpringBoot項目啟動時就加載數(shù)據(jù)到內(nèi)存實現(xiàn)
文章主要討論了在SpringBoot項目中,對于不經(jīng)常變動的配置型數(shù)據(jù),可以在項目啟動時直接加載到內(nèi)存中,以減少不必要的IO消耗,使用Maven管理后端依賴,并實現(xiàn)了服務層和控制器層2026-04-04
詳解IntelliJ IDEA 中如何配置多個jdk版本即(1.7和1.8兩個jdk都可用)
這篇文章主要介紹了詳解IntelliJ IDEA 中如何配置多個jdk版本即(1.7和1.8兩個jdk都可用),非常具有實用價值,需要的朋友可以參考下2017-11-11

