首页 > 其他分享 >spring boot整合druid数据源

spring boot整合druid数据源

时间:2023-01-26 23:22:06浏览次数:79  
标签:spring 数据源 boot druid 监控 new druidDataSource import public

druid源代码仓库地址:https://github.com/alibaba/druid

一、通过配置类进行设置

1、pom.xml中添加dependency

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>${druid-version}</version>
</dependency>

2、配置数据库连接池(MySQL8)
在application.yml文件中配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/xxx
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver

3、配置_StatFilter

    @ConfigurationProperties(prefix = "spring.datasource")   //获取配置文件中的参数
    @Bean
    public DataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();

        //Druid内置提供一个StatFilter,用于统计监控信息
        //也可以在yml文件中配置
        druidDataSource.setFilters("stat");

        return druidDataSource;
    }

4、配置_StatViewServlet
根据配置中的url-pattern来访问内置监控页面,例如:
http://localhost:8080/druid/index.html

    @Bean
    public ServletRegistrationBean statViewServlet() {
        StatViewServlet statViewServlet = new StatViewServlet();

        // 内置监控页面的首页是/druid/index.html
        ServletRegistrationBean<StatViewServlet> servletServletRegistrationBean = new ServletRegistrationBean<>(statViewServlet,"/druid/*");

        //配置监控页面访问密码
        servletServletRegistrationBean.addInitParameter("loginUsername","druid");
        servletServletRegistrationBean.addInitParameter("loginPassword","druid");

        return servletServletRegistrationBean;
    }

5、配置WebStatFilter

    @Bean
    public FilterRegistrationBean webStatFilter() {

        WebStatFilter webStatFilter = new WebStatFilter();
        FilterRegistrationBean<WebStatFilter> webStatFilterFilterRegistrationBean = new FilterRegistrationBean<>(webStatFilter);

        webStatFilterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
        //排除 *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* 相关文件
        webStatFilterFilterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

        return webStatFilterFilterRegistrationBean;
    }

6、配置 wallfilter
在第三步配置_StatFilter中,添加wall

    @ConfigurationProperties(prefix = "spring.datasource")   //获取配置文件中的参数
    @Bean
    public DataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();

        //Druid内置提供一个StatFilter,用于统计监控信息
        //也可以在yml文件中配置
        druidDataSource.setFilters("stat,wall");
        druidDataSource.setMaxActive(12);

        return druidDataSource;
    }

所有代码如下:

MyDataSourceConfig类
package com.greenery.admin.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Arrays;

@Configuration
public class MyDataSourceConfig {

    @ConfigurationProperties(prefix = "spring.datasource")   //获取配置文件中的参数
    @Bean
    public DataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();

        //Druid内置提供一个StatFilter,用于统计监控信息
        //也可以在yml文件中配置
        druidDataSource.setFilters("stat,wall");
        druidDataSource.setMaxActive(12);

        return druidDataSource;
    }

    /**
     * 配置druid的内置监控
     *
     * Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。
     *
     * 这个StatViewServlet的用途包括:
     *      提供监控信息展示的html页面
     *      提供监控信息的JSON API
     */
    @Bean
    public ServletRegistrationBean statViewServlet() {
        StatViewServlet statViewServlet = new StatViewServlet();

        // 内置监控页面的首页是/druid/index.html
        ServletRegistrationBean<StatViewServlet> servletServletRegistrationBean = new ServletRegistrationBean<>(statViewServlet,"/druid/*");

        //配置监控页面访问密码
        servletServletRegistrationBean.addInitParameter("loginUsername","druid");
        servletServletRegistrationBean.addInitParameter("loginPassword","druid@2023");

        return servletServletRegistrationBean;
    }

    /**
     * WebStatFilter用于采集web-jdbc关联监控的数据
     */
    @Bean
    public FilterRegistrationBean webStatFilter() {

        WebStatFilter webStatFilter = new WebStatFilter();
        FilterRegistrationBean<WebStatFilter> webStatFilterFilterRegistrationBean = new FilterRegistrationBean<>(webStatFilter);

        webStatFilterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
        //排除 *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* 相关文件
        webStatFilterFilterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

        return webStatFilterFilterRegistrationBean;
    }

}

TestController类
@Controller
public class TestController {
    @Autowired
    JdbcTemplate jdbcTemplate;

    @ResponseBody
    @GetMapping("/sql")
    public String mySql() {

        Long aLong = jdbcTemplate.queryForObject("select count(*) from g_user", long.class);
        return aLong.toString();
    }
}

二、通过yml文件配置

1、pom.xml中加上dependency

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid-version}</version>
</dependency>

2、application.yml文件中进行配置

spring:
  # 处理druid-1.1.22及以上版本无法监控SpringBean问题
  aop:
    auto: false

  datasource:
    url: jdbc:mysql://localhost:3306/xxx
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver


    druid:
      filters: stat,wall,slf4j                #底层开启功能:sql监控,防火墙,日志
      aop-patterns: com.greenery.admin.*      #监控SpringBean
      stat-view-servlet:                      #配置监控页
        enabled: true
        login-username: xxx
        login-password: xxx
        reset-enable: false
      web-stat-filter:                        #监控web
        enabled: true
        url-pattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'

      # 详细配置
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 1000
        wall:
          enabled: true
          config:
            drop-table-allow: false

标签:spring,数据源,boot,druid,监控,new,druidDataSource,import,public
From: https://www.cnblogs.com/shuimublog/p/17068388.html

相关文章

  • SpringCloud Alibaba
    前言SpringCloudAlibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开......
  • Spring编程注意事项
    Spring编程注意事项目录SpringBean定义1、Spring默认扫描包(ComponentScan注解)只扫描application所在的包下2、我们定义一个类为Bean,如果再显式定义了构造器,那么......
  • Java基于springboot大学生宿舍寝室考勤人脸识别管理系统
    简介Java基于springboot开发的大学生寝室管理系统宿舍管理系统。学生可以查找寝室和室友信息,可以申请换寝室,申请维修,寝室长提交考勤信息(宿管确认学生考勤信息),补签,查看寝室......
  • 消息驱动(SpringCloud Stream)
    前言什么是消息驱动?屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型官网:​​https://spring.io/projects/spring-cloud-stream#overview​​​​https://cloud.s......
  • SpringMVC学习笔记 - 第一章 - 工作流程、Bean加载控制、请求与响应(参数接收与内容返
    【前置内容】Spring学习笔记全系列传送门:Spring学习笔记-第一章-IoC(控制反转)、IoC容器、Bean的实例化与生命周期、DI(依赖注入)Spring学习笔记-第二章-注解......
  • 230126_50_SpringBoot入门
    4.首页实现自定义配置packagecom.bill.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.an......
  • 实战-mongodb副本集搭建以及整合springboot使用
    一mongodb介绍MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 Nosql技术门类redis内存型mongodb......
  • spring 注入的3种方式
    spring注入的3种方式属性注入就是平时使用最多的在属性上加一个@Autowiredset方法在spring3.x及之前推荐使用,通过提交暴露可以解决循环依赖的问题构造器(构......
  • springmvc关于通过使用路径占位符出现中文乱码解决办法
    springmvc接受json数据可以通过名称、通过对象,也可以通过路径。当使用路径占位符时,会出现中文乱码。此时,需要转换。即@GetMapping("/girl5")//http://localhost:8080/gi......
  • 微服务 Spring Boot 整合 Redis BitMap 实现 签到与统计
    文章目录​​⛄引言​​​​一、RedisBitMap基本用法​​​​⛅BitMap基本语法、指令​​​​⚡使用BitMap完成功能实现​​​​二、SpringBoot整合Redis实现签到......