news 2026/8/28 18:10:36

Spring Boot Druid 数据库连接池入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot Druid 数据库连接池入门

1. Druid 单数据源#### 1.1 引入依赖###### 在pom.xml文件中,引入相关依赖。 <?xml version="1.0" encoding="UTF-8"?> org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE 4.0.0 lab-19-datasource-pool-druid-single org.springframework.boot spring-boot-starter-jdbc com.alibaba druid-spring-boot-starter 1.1.21 mysql mysql-connector-java 5.1.48 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test #### 1.2 应用配置文件在application.yml中,添加 Druid 配置,如下: spring: # datasource 数据源配置内容,对应 DataSourceProperties 配置属性类 datasource: url: jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8 driver-class-name: com.mysql.jdbc.Driver username: root # 数据库账号 password: # 数据库密码 type: com.alibaba.druid.pool.DruidDataSource # 设置类型为 DruidDataSource # Druid 自定义配置,对应 DruidDataSource 中的 setting 方法的属性 druid: min-idle: 0 # 池中维护的最小空闲连接数,默认为 0 个。 max-active: 20 # 池中最大连接数,包括闲置和使用中的连接,默认为 8 个。 filter: stat: # 配置 StatFilter ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter log-slow-sql: true # 开启慢查询记录 slow-sql-millis: 5000 # 慢 SQL 的标准,单位:毫秒 stat-view-servlet: # 配置 StatViewServlet ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE enabled: true # 是否开启 StatViewServlet login-username: yudaoyuanma # 账号 login-password: javaniubi # 密码 *spring.datasource配置项,设置 Spring 数据源的通用配置。其中,spring.datasource.type配置项,需要主动设置使用 DruidDataSource 。因为默认情况下,spring-boot-starter-jdbc的DataSourceBuilder会按照DATA_SOURCE_TYPE_NAMES的顺序,尝试推断数据源的类型。*spring.datasource.druid配置项,设置 Druid 连接池的自定义配置。然后DruidDataSourceAutoConfigure会自动化配置 Druid 连接池。 * 在《Druid —— 配置属性》和《DruidDataSource 配置属性列表》下,提供了各种 Druid 的配置项,胖友可以自己看看。 *filter.stat配置项,我们配置了 DruidStatFilter,用于统计监控信息。对应文档《Druid —— 配置_StatFilter》。要注意,StatFilter 并不是我们说的javax.servlet.Filter,而是 Druid 提供的Filter拓展机制。 *filter.stat-view-servlet配置项,我们配置了 DruidStatViewServlet,用于提供监控信息的展示的 html 页面JSON API。对应文档《Druid —— 配置_StatViewServlet 配置》。StatViewServlet 就是我们说的javax.servlet.Filter。#### 1.3 Application创建Application.java类,配置@SpringBootApplication注解即可。代码如下: @SpringBootApplication public class Application implements CommandLineRunner { private Logger logger = LoggerFactory.getLogger(Application.class); @Autowired private DataSource dataSource; public static void main(String[] args) { // 启动 Spring Boot 应用 SpringApplication.run(Application.class, args); } @Override public void run(String… args) { logger.info(“[run][获得数据源:{}]”, dataSource.getClass()); } } 执行日志如下: 2019-11-12 19:34:12.079 INFO 48359 — [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource 2019-11-12 19:34:12.156 INFO 48359 — [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited 2019-11-12 19:34:12.560 INFO 48359 — [ main] c.i.s.lab19.datasourcepool.Application : [run][获得数据源:class com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceWrapper] #### 1.4 监控功能因为我们在 1.2应用配置中,做了如下操作:* 通过spring.datasource.filter.stat配置了 StatFilter ,统计监控信息。* 通过spring.datasource.filter.stat-view-servlet配置了 StatViewServlet ,提供监控信息的展示的 html 页面和 JSON API 。所以我们在启动项目后,访问http://127.0.0.1:8080/druid地址,可以看到监控 html 页面。如下图所示:* 在界面的顶部,提供了数据源、SQL 监控、SQL 防火墙等等功能。 * 每个界面上,可以通过View JSON API获得数据的来源。同时,我们可以在JSON API(?http://127.0.0.1:8080/druid/api.html?)菜单对应的界面中,看到 StatViewServlet 内置的监控信息的 JSON API 列表。 * 因为监控信息是存储在 JVM 内存中,在 JVM 进程重启时,信息将会丢失。如果我们希望持久化到 MySQL、Elasticsearch、HBase 等存储器中,可以通过 StatViewServlet 提供的 JSON API 接口,采集监控信息。另外,有个druid-aggregated-monitor开源项目,提供了 集中监控分布式服务中的 Druid 连接池的方案和思路。 * 如果 StatViewServlet 提供的 JSON API 接口,无法满足我们的诉求,我们可以通过自定义 API 接口,使用DruidStatManagerFacade获得监控信息。使用示例DruidStatController代码如下 @RestController public class DruidStatController { @GetMapping(“/monitor/druid/stat”) @Deprecated public Object druidStat(){ //DruidStatManagerFacade#getDataSourceStatDataList()方法,可以获取所有数据源的监控数据。 // 除此之外,DruidStatManagerFacade 还提供了一些其他方法,你可以按需选择使用。 return DruidStatManagerFacade.getInstance().getDataSourceStatDataList(); } } 当然,绝大多数情况下,我们并不需要做这方面的拓展### 2. Druid 多数据源和1.1引入依赖是一致。#### 5.2 应用配置在application.yml中,添加 Druid 配置,如下: spring: # datasource 数据源配置内容 datasource: # 订单数据源配置 orders: url: jdbc:mysql://127.0.0.1:3306/test_orders?useSSL=false&useUnicode=true&characterEncoding=UTF-8 driver-class-name: com.mysql.jdbc.Driver username: root password: type: com.alibaba.druid.pool.DruidDataSource # 设置类型为 DruidDataSource # Druid 自定义配置,对应 DruidDataSource 中的 setting 方法的属性 min-idle: 0 # 池中维护的最小空闲连接数,默认为 0 个。 max-active: 20 # 池中最大连接数,包括闲置和使用中的连接,默认为 8 个。 # 用户数据源配置 users: url: jdbc:mysql://127.0.0.1:3306/test_users?useSSL=false&useUnicode=true&characterEncoding=UTF-8 driver-class-name: com.mysql.jdbc.Driver username: root password: type: com.alibaba.druid.pool.DruidDataSource # 设置类型为 DruidDataSource # Druid 自定义配置,对应 DruidDataSource 中的 setting 方法的属性 min-idle: 0 # 池中维护的最小空闲连接数,默认为 0 个。 max-active: 20 # 池中最大连接数,包括闲置和使用中的连接,默认为 8 个。 # Druid 自定已配置 druid: # 过滤器配置 filter: stat: # 配置 StatFilter ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter log-slow-sql: true # 开启慢查询记录 slow-sql-millis: 5000 # 慢 SQL 的标准,单位:毫秒 # StatViewServlet 配置 stat-view-servlet: # 配置 StatViewServlet ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE enabled: true # 是否开启 StatViewServlet login-username: yudaoyuanma # 账号 login-password: javaniubi # 密码 * 不同于我们在「3.2 应用配置文件」中,我们将 Druid 的自定义配置,和urldriver-class-name等数据源的通用配置放在同一级,这样后续我们只需要使用@ConfigurationProperties(prefix = "spring.datasource.orders")的方式,就能完成 DruidDataSource 的配置属性设置。* 在spring.datasource.druid配置项下,我们还是配置了filter.statstat-view-servlet配置项,用于 Druid 监控功能。#### 2.3 数据源配置类在cn.iocoder.springboot.lab19.datasourcepool.config包路径下,我们会创建DataSourceConfig配置类。代码如下: // DataSourceConfig.java @Configuration public class DataSourceConfig { /** * 创建 orders 数据源/ @Primary @Bean(name = “ordersDataSource”) @ConfigurationProperties(prefix = “spring.datasource.orders”) // 读取 spring.datasource.orders 配置到 HikariDataSource 对象 public DataSource ordersDataSource() { return DruidDataSourceBuilder.create().build(); } /* * 创建 users 数据源 */ @Bean(name = “usersDataSource”) @ConfigurationProperties(prefix = “spring.datasource.users”) public DataSource usersDataSource() { return DruidDataSourceBuilder.create().build(); } } #### 2.4 Application创建Application.java类,配置@SpringBootApplication注解即可。代码如下: // Application.java @SpringBootApplication public class Application implements CommandLineRunner { private Logger logger = LoggerFactory.getLogger(Application.class); @Resource(name = “ordersDataSource”) private DataSource ordersDataSource; @Resource(name = “usersDataSource”) private DataSource usersDataSource; public static void main(String[] args) { // 启动 Spring Boot 应用 SpringApplication.run(Application.class, args); } @Override public void run(String… args) { // orders 数据源 logger.info(“[run][获得数据源:{}]”, ordersDataSource.getClass()); // users 数据源 logger.info(“[run][获得数据源:{}]”, usersDataSource.getClass()); } } 执行日志如下: 2019-11-12 21:39:24.063 INFO 49670 — [ main] c.i.s.lab19.datasourcepool.Application : [run][获得数据源:class com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceWrapper] 2019-11-12 21:39:24.064 INFO 49670 — [ main] c.i.s.lab19.datasourcepool.Application : [run][获得数据源:class com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceWrapper] #### 2.5 监控功能和2.4监控功能一致。不过呢,我们在监控页面上,可以看到两个 Druid 数据库连接池。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 18:07:14

vxe-table 表格组件实现数据滚动轮播

在数据可视化大屏、监控中心或信息展示类后台中&#xff0c;表格数据自动轮播&#xff08;跑马灯效果&#xff09;是常见需求——无需用户操作&#xff0c;数据行按固定速度持续向上滚动&#xff0c;营造动态、实时的视觉氛围。 vxe-table 本身不内置轮播功能&#xff0c;但借助…

作者头像 李华
网站建设 2026/8/28 17:54:21

Canon:用受控英语让提示词与Agent通信更可解析

大模型的提示词写多了以后&#xff0c;很多人会有一种感觉&#xff1a;同一个任务&#xff0c;换一种说法&#xff0c;结果就完全变了。更麻烦的是&#xff0c;当多个模型 Agent 互相调用时&#xff0c;A 发出的消息 B 不一定能理解&#xff0c;因为两边都在用自由自然语言。Ca…

作者头像 李华
网站建设 2026/8/28 17:50:21

AI Agent 电商下单的技术边界与合规设计:从平台限制到工程实践

最近有一个新闻值得所有做 AI Agent 的开发者停下来想一想&#xff1a;Perplexity 试图让 AI 帮你直接下单购物&#xff0c;结果遭到亚马逊平台方面的限制&#xff0c;随后又出现“反转”传闻。乍一看这是商业新闻&#xff0c;但往深一层看&#xff0c;它其实是 AI Agent 发展中…

作者头像 李华
网站建设 2026/8/28 17:41:28

蓝桥杯赛前冲刺:从刷题到临场策略的思维转变与实战指南

1. 冲刺倒计时&#xff1a;从“刷题”到“临场策略”的思维转变 距离蓝桥杯比赛还有一天&#xff0c;也就是所谓的“Day 29”。这个阶段&#xff0c;很多同学的心态会陷入一种微妙的焦虑&#xff1a;感觉还有很多题没刷&#xff0c;很多知识点没复习&#xff0c;但又觉得再刷新…

作者头像 李华
网站建设 2026/8/28 17:37:13

嵌入式CNN延迟预测:Blackthorn框架原理与Jetson平台实践

1. 项目概述&#xff1a;为什么我们需要一个嵌入式CNN延迟估计框架&#xff1f; 在嵌入式AI领域&#xff0c;尤其是基于Nvidia Jetson这类边缘计算平台部署卷积神经网络&#xff08;CNN&#xff09;时&#xff0c;一个核心的、令人头疼的问题是&#xff1a;“我这个模型&#x…

作者头像 李华