当前位置: 首页 > news >正文

Spring Boot 2整合Druid的两种方式

一、自定义整合Druid(非Starter方式)

适用于需要完全手动控制配置的场景

  1. 添加依赖(pom.xml)
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version> <!-- 使用最新版本 -->
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

  1. 创建配置类
@Configuration
public class DruidConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource druidDataSource() {return new DruidDataSource();}// 配置监控服务器@Beanpublic ServletRegistrationBean<StatViewServlet> statViewServlet() {ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");Map<String, String> initParams = new HashMap<>();initParams.put("loginUsername", "admin");  // 监控后台登录账号initParams.put("loginPassword", "admin123"); initParams.put("allow", "");  // 允许所有访问bean.setInitParameters(initParams);return bean;}// 配置过滤器@Beanpublic FilterRegistrationBean<WebStatFilter> webStatFilter() {FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>(new WebStatFilter());bean.addUrlPatterns("/*");bean.addInitParameter("exclusions", "*.js,*.css,/druid/*");return bean;}
}

  1. application.yml配置
spring:datasource:url: jdbc:mysql://localhost:3306/testdbusername: rootpassword: root123driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource# 连接池配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: truefilters: stat,wall

二、使用Starter整合Druid(推荐)

官方提供的简化方案,自动配置监控页面

  1. 添加Starter依赖
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>

  1. application.yml完整配置
spring:datasource:url: jdbc:mysql://localhost:3306/testdbusername: rootpassword: root123driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:# 连接池配置initial-size: 5min-idle: 5max-active: 20max-wait: 60000# 监控配置stat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: admin123reset-enable: falseweb-stat-filter:enabled: trueurl-pattern: /*exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"# 防火墙配置filter:wall:config:multi-statement-allow: true

三、关键功能验证
  1. 监控界面访问

    • 访问 http://localhost:8080/druid
    • 使用配置的用户名/密码登录
  2. SQL监控

    @RestController
    public class TestController {@Autowiredprivate JdbcTemplate jdbcTemplate;@GetMapping("/users")public List<Map<String, Object>> getUsers() {return jdbcTemplate.queryForList("SELECT * FROM user");}
    }
    

四、配置优化建议
  1. 生产环境安全

    druid:stat-view-servlet:allow: 192.168.1.100  # 限制访问IPdeny: 192.168.1.73
    

  2. 性能调优参数

    druid:max-wait: 1000validation-query: SELECT 1test-on-borrow: falsetest-on-return: falsetest-while-idle: true
    

  3. 启用SQL防火墙

    druid:filter:wall:enabled: trueconfig:drop-table-allow: false
    

注意:使用Starter方式时,监控页面默认路径为/druid/*,如需修改可在配置中调整url-pattern参数。两种方式都支持完整的连接池参数配置,但Starter方式简化了监控功能的集成。

http://www.lryc.cn/news/602039.html

相关文章:

  • Spring Boot日志开发实战手册:集成/输出/级别控制/持久化精要
  • docker排查OOM
  • c++ 中的字符串相关的操作
  • 「源力觉醒 创作者计划」_文心大模型4.5系列开源模型,意味着什么?对开发者、对行业生态有何影响?
  • 重复文件清理工具,附免费链接
  • 聊聊工业相机中的硬触发、软触发和视频流模式
  • MFC UI对话框
  • puppeteer 系列模块的系统性、详细讲解
  • 使用JavaScript实现一个代办事项的小案例
  • 八大神经网络的区别
  • 【RH134 问答题】第 6 章 管理 SELinux 安全性
  • 计算机网络(基础篇)
  • 《零基础入门AI: 从轮廓查找到形态学变换(OpenCV图像预处理)》
  • 【深度学习新浪潮】基于文字生成3D城市景观的算法有哪些?
  • Leaflet 综合案例-聚类图层控制
  • Python快速入门(2025版):输入
  • 婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
  • C++ list 容器全解析:从构造到模拟实现的深度探索----《Hello C++ Wrold!》(16)--(C/C++)
  • 数值计算 | 图解基于龙格库塔法的微分方程计算与连续系统离散化(附Python实现)
  • C primer plus (第六版)第九章 编程练习第6题
  • 【Rust异步】async和await异步编程实战:高并发任务处理全解析
  • Java 排序
  • 股指期货周度想法
  • RWA 正当红,是 DeFi 的终点、拐点,还是新起点?
  • 【C++】手搓一个STL风格的vector容器
  • 7.DRF 过滤、排序、分页
  • 开发指南125-HTML DOM事件
  • 【Linux篇章】穿越数据迷雾:HTTPS构筑网络安全的量子级护盾,重塑数字信任帝国!
  • Kafka——请求是怎么被处理的?
  • 云原生MySQL Operator开发实战(三):高级特性与生产就绪功能