深入Spring Boot :从源码分析自动配置原理

本文详细介绍了如何在Spring Boot项目中将默认的HikariCP数据库连接池切换为Druid,包括排除HikariCP依赖、添加Druid依赖及配置参数。接着,深入探讨了Spring Boot自动配置的原理,从@SpringBootApplication入口,到扫描@EnableAutoConfiguration注解,解析配置类,最后展示了自定义starter并验证其实现。
摘要由CSDN通过智能技术生成

切换Druid连接池

在分析SpringBoot自动配置实现原理之前,先来看一下在使用SpringBoot开发的项目代码中如何将数据库连接池切换成Druid。

对于数据库连接池的选择,SpringBoot官方更偏向于推荐使用HikariCP,原因是他们认为HikariCP的性能和并发性比较好,如果当前代码的classpath路径下存在HikariCP的jar包,则会优先使用HikariCP数据库连接池;如果当前代码的classpath路径下不存在HikariCP的jar包,存在Tomcat数据库连接池的jar包,则会使用Tomcat数据库连接池;如果HikariCP的jar包和Tomcat数据库连接池的jar包都不存在,存在Commons DBCP2的jar包,则会使用DBCP2数据库连接池;如果上述三种数据库连接池的jar包都不存在,而Oracle UCP(Oracle Universal Connection Pool)相关jar包存在,则使用Oracle UCP数据库连接池。

既然,SpringBoot对数据库连接池的选择是使用上面的算法,是动态选择的,那为什么本文最开始说的是“如何将数据库连接池切换成Druid”呢?那是因为如果你的依赖管理中使用到了spring-boot-starter-jdbc或spring-boot-starter-data-jpa这两个starters,依赖列表中会自动依赖HikariCP,也就是说,此时默认使用的是HikariCP数据库连接池。

关于数据库连接池的性能和并发性,本文不做阐述,连接池的选择仁者见仁智者见智。接下来,我们看一下如何将默认的HikariCP切换成Druid,完整示例代码地址:https://github.com/wind7rui/SpringBoot2.x-example/tree/main/DataSource-Druid。

排除HikariCP

首先,删除依赖管理中的HikariCP依赖、排除依赖管理中的HikariCP传递依赖,spring-boot-starter-jdbc或spring-boot-starter-data-jpa这两个starters依赖中会传递依赖HikariCP,需要排除,以下以Maven构建管理工具为例。

添加Druid依赖

添加Druid的jar包依赖,使用druid的starters:druid-spring-boot-starter。

配置Druid连接池参数

在application.properties中添加Druid数据库连接池参数配置,以下为示例配置。

完成以上步骤即完成了Druid连接池的切换,代码运行时就可以使用Druid数据库连接池了,是不是很简单!

自动配置原理

上述的示例通过简单的操作即完成了Druid连接池的切换,这其中就用到了SpringBoot的自动配置特性,官方说自动配置是聪明且智能的,下面我们一起来看一下这个聪明且智能的自动配置是如何实现的。

基于SpringBoot开发的代码一般都会有一个包含main()方法的应用启动类,并且会使用@SpringBootApplication注解标注在这个类上,例如如下代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值