[000-01-015].第03节:SpringBoot中数据源的自动配置

我的后端学习大纲
SpringBoot学习大纲


1.数据访问流程:


2.搭建数据库开发场景:

2.1.导入JDBC场景:



2.2.分析自动导入的内容:


2.3.分析为何没有导入数据库驱动:

  • 1.因为人家也不知道我要用啥数据库,所以在自己决定用什么数据库后,就自己引入数据库驱动就可以了
  • 2.SpringBoot对引入的数据库有默认的版本库,想要修改版本可以有以下两个方式:

直接依赖引入具体版本(maven的就近依赖原则)

xml 复制代码
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
			 <version>5.1.49</version>
        </dependency>

重新声明版本(maven的属性的就近优先原则

xml 复制代码
  <properties>
        <java.version>1.8</java.version>
        <mysql.version>5.1.49</mysql.version>
    </properties>

3.分析自动配置类:



3.1.数据源的自动配置类:DataSourceAutoConfiguration

  • 1.修改数据源相关的配置:spring.datasource

  • 2.数据库连接池的配置是自己容器中没有DataSource才自动配置的;底层默认配置好的连接池是:HikariDataSource

    java 复制代码
    	@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
  • 3.对DataSourceConfiguration点入进去看看:


3.2. 事务管理器的自动配置类:DataSourceTransactionManagerAutoConfiguration:


3.3. JdbcTemplate的自动配置类:JdbcTemplateAutoConfiguration:

可以来对数据库进行crud


  • 可以修改这个配置项@ConfigurationProperties(prefix = "spring.jdbc")来修改JdbcTemplate

  • @Bean@Primary JdbcTemplate容器中有这个组件


3.4. jndi的自动配置类:JndiDataSourceAutoConfiguration


3.5.分布式事务相关的配置类:XA DataSourceAutoConfiguration:


4.修改配置项

yml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db_account
    username: root
    password: ROOT
    driver-class-name: com.mysql.jdbc.Driver

5.做个小测试





6.更改数据源为Druid后产生的自动配置:

  • 2.引入场景:

  • 3.分析自动配置:


  • 1.扩展配置项:spring.datasource.druid

  • 2.DruidSpringAopConfiguration.class, 监控SpringBean的;配置项:spring.datasource.druid.aop-patterns

  • 3.DruidStatViewServletConfiguration.class, 监控页的配置:spring.datasource.druid.stat-view-servlet;默认开启

  • 4.DruidWebStatFilterConfiguration.class, web监控配置;spring.datasource.druid.web-stat-filter;默认开启

  • 5.DruidFilterConfiguration.class}) :所有Druid自己filter的配置:

    xml 复制代码
        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";
相关推荐
Asthenia04121 分钟前
博客:八股文网站验证码解锁与JWT登录机制解析/前端Vuex实现
后端
滕昕瑜13 分钟前
Pascal语言的操作系统安全
开发语言·后端·golang
Asthenia041226 分钟前
Java 后端实现 App 列表滚动加载:用游标优化深翻页问题
后端
stark张宇31 分钟前
三步接入DeepSeek智能对话API:PHP代码实现与响应解析
后端·php·deepseek
Excuse_lighttime32 分钟前
JAVA阻塞队列
java·开发语言·jvm
luoluoal1 小时前
Java项目之基于ssm的怀旧唱片售卖系统(源码+文档)
java·mysql·mybatis·ssm·源码
Asthenia04121 小时前
深入探讨DDD中的聚合根:以电商业务场景为例
后端
green5+11 小时前
LeetCode18四数之和
java·开发语言·算法
Asthenia04121 小时前
面试官问我:你写代码会复用公共SQL么?
后端
lzjava20242 小时前
Redis数据结构之Set
java·数据结构·redis