• Springboot学习07-数据源Druid


    Springboot学习07-数据源Druid

    关键字

       Druid

     

    前言

      学习笔记

    正文

    1-Druid是什么

     Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。

    2-Springboot引入Druid

    2-1-maven依赖

            <!--引入druid数据源-->
            <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.8</version>
            </dependency>

     2-2-application.propertites配置

    # 数据库连接url地址
    spring.datasource.url=jdbc:mysql://IP:3306/demo
    # 数据库连接用户名和密码
    spring.datasource.username=wbcfq
    spring.datasource.password=wbcfq
    # 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    # 使用druid数据源
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    # 初始化大小,最小,最大
    spring.datasource.initialSize=10
    spring.datasource.minIdle=10
    spring.datasource.maxActive=30
    # 配置获取连接等待超时的时间
    spring.datasource.maxWait=60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    spring.datasource.minEvictableIdleTimeMillis=300000
    spring.datasource.validationQuery=SELECT 1 FROM DUAL
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    # 打开PSCache,并且指定每个连接上PSCache的大小
    spring.datasource.poolPreparedStatements=true
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    spring.datasource.filters=stat,wall,log4j
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    # 合并多个DruidDataSource的监控数据
    spring.datasource.useGlobalDataSourceStat=true

     2-3-配置Druid的监控(servlet和filter)

    @Configuration
    public class DruidConfiguration {
    
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druid(){
           return  new DruidDataSource();
        }
    
        //配置
        //1、配置一个管理后台的Servlet
        @Bean
        public ServletRegistrationBean statViewServlet(){
            ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            Map<String,String> initParams = new HashMap<>();
    
            initParams.put("loginUsername","admin");//后台登陆账号
            initParams.put("loginPassword","admin");//后台登陆密码
            initParams.put("allow","");//默认就是允许所有访问
            //initParams.put("deny","192.168.31.92");//禁止访问的IP
    
            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,*.css,/druid/*");
    
            bean.setInitParameters(initParams);
    
            bean.setUrlPatterns(Arrays.asList("/*"));
    
            return  bean;
        }
    }

    2-5-实际效果

    参考文献

     1-https://blog.yoodb.com/sugarliny/article/detail/1495

    2-https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter

  • 相关阅读:
    alpine python3中使用mysql报错ModuleNotFoundError: No module named 'MySQLdb'
    Galera集群部署
    Kibana did not load properly.Check the server output for more information。
    zabbix-server迁移
    traefik使用etcd存储配置
    Rancher2.4搭建单机版rabbitmq
    ngx_http_upstream_module模块说明
    【说明】
    运维日常集合(个人向 坚持更新)
    Linux监控-历史细项数据回溯
  • 原文地址:https://www.cnblogs.com/wobuchifanqie/p/10236959.html
Copyright © 2020-2023  润新知