[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";
相关推荐
blxr_1 分钟前
Spring AI自定义Advisor
java·spring
kisloy3 分钟前
【反爬虫】极验4 W参数逆向分析
java·javascript·爬虫
JuiceFS3 分钟前
浅析 Amazon S3 Files:工作机制、性能边界与 JuiceFS 对比
后端
-Rane5 分钟前
【C++】红黑树
java·开发语言
XPoet7 分钟前
AI 编程工程化:MCP——给你的 AI 员工打通外部能力
前端·后端·ai编程
吃不胖爹17 分钟前
Sharding-JDBC只分表不分库
java
yaaakaaang23 分钟前
十三、责任链模式
java·责任链模式
爱吃烤鸡翅的酸菜鱼26 分钟前
【Java】封装位运算通用工具类——用一个整数字段替代几十个布尔列,极致节省存储空间
java·开发语言·设计模式·工具类·位运算·合成复用原则
菜菜小狗的学习笔记33 分钟前
八股(三)Java并发
java·开发语言
云烟成雨TD37 分钟前
Spring AI Alibaba 1.x 系列【10】ReactAgent 工具加载和执行流程
java·人工智能·spring