Springboot 整合 durid

Springboot 整合 druid

druid的优势

  • 可以很好的监控 DB 池连接 和 SQL 的执行情况
  • 可以给数据库密码加密
  • 可以很方便的编写JDBC插件

配置参数

在这里插入图片描述

使用

整合 Druid

导入 Druid 数据源依赖

配置数据源

在这里插入图片描述

配置参数

在这里插入图片描述

spring:
  datasource:
   #数据源基本配置
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_crud
    type: com.alibaba.druid.pool.DruidDataSource
   #数据源其他配置
    druid:
      #配置初始化大小、最小、最大线程数
      initialSize: 5
      minIdle: 5
      #CPU核数+1,也可以大些但不要超过20,数据库加锁时连接过多性能下降
      maxActive: 20
     # 最大等待时间,内网:800,外网:1200(三次握手1s)
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
     #配置一个连接在池中最大空间时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 
      testWhileIdle: true
     # 设置从连接池获取连接时是否检查连接有效性,true检查,false不检查
      testOnBorrow: true
      # 设置从连接池归还连接时是否检查连接有效性,true检查,false不检查
      testOnReturn: true
      #可以支持PSCache(提升写入、查询效率)
      poolPreparedStatements: true
      #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙  
      filters: stat,wall,log4j
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true  
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
绑定配置参数

在这里插入图片描述

配置监控页面

在这里插入图片描述

配置拦截器

在这里插入图片描述

@Configuration
public class DruidConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource getMyDruidDataSource(){
        return new DruidDataSource();
    }

    //配置Druid的监控
    //1.配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        // 记得加上"/druid/*",否则在进行登录页面的重定向过多而无法访问的问题(记得在Google浏览器才会报这个错)
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
        Map<String,String> initParams = new HashMap<>();

        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        //默认是允许所有访问
        //initParams.put("allow","");
//        initParams.put("deny","192.168.31.30");
        bean.setInitParameters(initParams);
        return bean;
    }
    //2.配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        //配置拦截时需要排除的请求
        initParams.put("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        bean.setInitParameters(initParams);

        bean.setUrlPatterns(Arrays.asList("/*"));

        return bean;

    }
}

在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何在Spring Boot中使用Druid。首先,我得确认用户的问题是否存在拼写错误。用户提到了“durid”,这应该是“Druid”,也就是阿里巴巴开源的数据库连接池。接下来,我需要考虑用户可能的背景。他们可能已经对Spring Boot有一定的了解,现在想集成Druid来优化数据库连接管理。 用户的需求可能包括如何配置Druid,基本的依赖添加,以及监控功能的启用。同时,他们可能想了解Druid的优势,比如性能监控、SQL防注入等。我需要确保回答涵盖这些方面,并提供实际的配置示例,比如YAML配置和监控页面的设置。 此外,用户可能不知道Druid的一些高级功能,比如防火墙配置和统计功能,这些也需要简要提及。需要提醒用户注意版本兼容性,不同Spring Boot版本可能对应不同的Druid版本,但用户可能没有明确说明他们使用的版本,所以给出一个通用的示例会更安全。 最后,要确保回答结构清晰,分步骤说明,让用户能够逐步跟进。还要注意代码块和格式的正确性,避免拼写错误,比如之前用户提到的“durid”要纠正为“Druid”。可能需要检查之前的对话历史,确保没有重复信息,但在这个案例中,用户之前询问的是MySQL连接器,现在是新的主题,所以无需担心重复。 总结回答的结构:介绍Druid及其优势,添加依赖的步骤,配置文件的示例,监控配置的方法,注意事项,以及一个完整的代码示例。这样用户可以从头到尾了解整个集成过程,并能够实际应用到项目中。</think>$$Spring Boot 集成 Druid 连接池指南$$ Druid 是阿里巴巴开源的数据库连接池,相比 HikariCP 等连接池,提供了更强大的**监控统计**和**防御 SQL 注入**功能。以下是 Spring Boot 集成方案: $$核心优势$$ 1. **性能监控**:实时查看 SQL 执行统计 2. **防火墙功能**:防御 SQL 注入攻击 3. **数据源管理**:支持密码加密/解密 4. **Web 监控台**:可视化查看连接池状态 $$实施步骤$$ **1. 添加依赖** ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.18</version> </dependency> ``` **2. 配置 application.yml** ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/testdb username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 min-idle: 5 max-active: 20 # 启用监控统计功能 stat-view-servlet: enabled: true url-pattern: /druid/* login-username: admin login-password: druid123 web-stat-filter: enabled: true exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" ``` **3. 访问监控界面** 启动项目后访问:`http://localhost:8080/druid` 输入配置的账号密码即可查看: - 数据源状态 - SQL 执行统计 - URI 访问监控 - Session 跟踪 $$注意事项$$ 1. **版本兼容**:Spring Boot 2.x 建议使用 `druid-spring-boot-starter` 2. **生产安全**:务必修改监控页面的默认账号密码 3. **SQL 防火墙**:通过 `wall` 配置项启用防御功能 4. **慢 SQL 日志**:配置 `slow-sql-millis` 参数捕获慢查询 $$配置示例扩展$$ ```java // 自定义配置过滤器(可选) @Configuration public class DruidConfig { @Bean public ServletRegistrationBean<StatViewServlet> statViewServlet() { ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); bean.addInitParameter("allow", "127.0.0.1"); // 白名单 return bean; } } ``` 该方案相比默认连接池性能损耗约 1-2%,但提供了更完善的企业级功能,建议用于生产环境。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值