欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Druid通俗易懂的理解

程序员文章站 2024-02-29 21:51:58
...

Druid是什么

通俗点来说它是个不但继承了tomcat、dbcp2数据库连接池的优点,还支持扩展插件的数据库连接池,
其中最常用的三个插件:start、wall、log4j带给druid强大的后台监控、防御sql注入和日志等功能。
再简单点来说,它会有一个自己的后台监控页面,像这样:
Druid通俗易懂的理解

简单例子

依赖

<!--Druid-->
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid</artifactId>
     <version>1.1.21</version>
</dependency>
<!--log4j-->
<dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
</dependency>

配置文件

spring:
  datasource:
    username: root
    password:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_plus?serverTimezone=GMT&amp&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource #更改数据库的数据源

    # druid继承的tomcat、dbcp2的一些属性
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMinllis: 60000
    minEvictableIdleTimeMills: 300000
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: fales
    poolPreparedStatements: true

    # druid自己的能支持扩展插的配置
    filters: start,wall,log4j #分别是后台监控、防御sql注入和日志
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

配置类

@Configuration
public class DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource(){
        return new DruidDataSource();//实例druid数据源
    }

    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
        //配置后台页面的映射路径
        ServletRegistrationBean<StatViewServlet> servlet =
                new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
        HashMap<String,String> init = new HashMap<>();
        //配置登陆账号密码
        init.put("loginUsername","ncb");
        init.put("loginPassword","123");
        servlet.setInitParameters(initParameters);
        return servlet;
    }
}

验证结果

  • 首先打开localhost:8006/druid(端口改成自己项目的)
    Druid通俗易懂的理解

  • Postman向该项目发请求,使用8006端口的SQL(我这只是在86端口用了Ferign,实际访问的还是8006端口的SQL)Druid通俗易懂的理解

  • 到SQL防火墙下找到白名单,看到了访问涉及到的SQL语句也进来了
    Druid通俗易懂的理解

当然啦,druid的知识还有很多,大家还要继续冲下去。