SpringBoot整合阿里 Druid 数据源的实例详解

目录
  • 1. 在容器中注册 DruidDataSource 数据源。
  • 2. Druid 数据源各种属性配置方法
  • 3. 开启Druid的内置监控页面
  • 4. 打开 Druid 监控统计功能
  • 5. 配置Web和Spring关联监控
  • 6. 配置防火墙:
  • 7. 给监控页加入账号密码

前言:今年是我的第二个 1024 了 ,和我一起大声说出来,技术宅改变世界!!!

本节主要介绍的是:SpringBoot 整合阿里 Druid 数据源手动配置方法

1. 在容器中注册 DruidDataSource 数据源。

编写数据源配置类 MyDataSourseConfig.class,并在容器中注册 DruidDataSource 数据源。

代码示例如下:

@Configuration
public class MyDataSourseConfig {
    @Bean
    @ConfigurationProperties("spring.datasource") // 属性与配置文件绑定
    public DataSource dataSource(){
        return new DruidDataSource();
    }
}

2. Druid 数据源各种属性配置方法

方法一(不推荐): 直接在配置类中通过为自定义的 DruidDataSource 组件 通过 set 设置各种属性,来实现数据源的配置。

代码示例如下:

@Configuration
public class MyDataSourseConfig {
    @Bean
    public DataSource dataSource(){

        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/practice"); // 设置数据源连接 url
        // ..... 设置其他属性 .....
        return druidDataSource;
    }
}

这种方法当修养属性值时,需要大量修改源代码,因此不推荐。

方法二(推荐):通过 @ConfigurationProperties(“spring.datasource”) 注释将组件与配置文件中的 spring.datasource 项绑定,这样在修改自定义数据源属性时,直接在 application.yaml 文件的 spring.datasource 配置项下修改即可。代码示例如下:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/practice
    username: root
    password: 5201314love
    driver-class-name: com.mysql.jdbc.Driver

可通过自定义数据源组件注册到容器中修改默认数据源原理:

DataSourceAutoConfiguration.class 数据源自动配置类中,有如下设置。其表示容器中没有数据源,才自动配置 Hikari 数据源。若有数据源则使用容器中的数据源。

3. 开启Druid的内置监控页面

在容器中放一 Servlet ,具体操作方法为在 Druid数据源 配置类中注册一ServletRegistrationBean 组件到容器,ServletRegistrationBean 的Servlet 类型为 StatViewServlet 。代码示例如下:

注意点:访问的 url 为 "/druid/*" ,是一个 * 而不是双 **

@Configuration
public class MyDataSourseConfig {
    @Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSource(){
        return new DruidDataSource();
    }

    // 配置 druid 监控页功能 —— 在容器中放一 Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        StatViewServlet statViewServlet = new StatViewServlet();
        ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>(statViewServlet, "/druid/*");
        return registrationBean;
    }
}

4. 打开 Druid 监控统计功能

只是开启了监控页功能并不能让我们使用 Druid 为我们提供的 SQL 监控等功能。还需要为数据源配置 StatFilter,具体方法是通过 setFilters(“stat”) 方法配置。代码如下:

    @Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();
        // 加入监控功能 —— setFilters("stat");
        druidDataSource.setFilters("stat");
        return druidDataSource;
    }

这时我们再去访问数据库,可以发现SQL监控功能可用了

5. 配置Web和Spring关联监控

在容器中注册一 WebStatFilter ,通过 setUrlPatterns(Arrays.asList(“/*”) 设置监控的请求为 /** 请求。具体代码实现如下:

    // 采集 web-jdbc 关联监控的数据
    @Bean
    public FilterRegistrationBean webstatFilter(){
        WebStatFilter webStatFilter = new WebStatFilter();

        FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean<>(webStatFilter);
        registrationBean.setUrlPatterns(Arrays.asList("/*"));
        registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return registrationBean;
    }

6. 配置防火墙:

在数据源中通过 setFilter(“wall”) 加入 防火墙配置 (setFilter 多个值用逗号隔开)

        // 加入监控功能
        druidDataSource.setFilters("stat, wall");

小优化:
所有通过 setXXXX() 设置数据源的,都可以在配置文件中写,因为 druidDataSource 已经绑定了 spring.datasource 配置项

例如:

druidDataSource.setFilters("stat, wall");

可优化为:

spring:
  datasource:
    # ... 此处省略一堆其他配置....
    filters: stat,wall

7. 给监控页加入账号密码

在 ServletRegistrationBean 中通过 addInitParameter 加入账号密码的设置

    // 配置 druid 监控页功能 —— 在容器中放一 Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        StatViewServlet statViewServlet = new StatViewServlet();
        ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>(statViewServlet, "/druid/*");
        registrationBean.addInitParameter("loginUsername", "wanqing");
        registrationBean.addInitParameter("loginPassword", "520131");
        return registrationBean;
    }

到此这篇关于SpringBoot整合阿里 Druid 数据源的文章就介绍到这了,更多相关SpringBoot整合Druid 数据源内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 关于springboot配置druid数据源不生效问题(踩坑记)

    pom文件 如果你的springboot项目要用到druid,那么这三个依赖必不可少: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!--Druid--> <depen

  • SpringBoot整合Druid数据源过程详解

    这篇文章主要介绍了SpringBoot整合Druid数据源过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.数据库结构 2.项目结构 3.pom.xml文件 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</ar

  • SpringBoot使用Druid数据源的配置方法

    Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池) 一.依赖 为了测试,使用jdbcTemplate <!-- jdbcTemplate --> <dependency> <groupId>org.springframework.boot</groupId> <artifa

  • SpringBoot详解如何进行整合Druid数据源

    目录 1.自定义方式 1.添加依赖 2.编写配置 3.测试 2.starter方式(推荐) 1.添加依赖 2.编写配置 3.测试 Druid是数据库连接池,它能够提供强大的监控和扩展功能.官方文档 Spring Boot整合第三方技术的两种方式: 自定义 找starter场景 1.自定义方式 使用自定义方式整合Druid 1.添加依赖 在pom.xml添加相关依赖 <!--数据库相关--> <dependency> <groupId>org.springframewor

  • springboot 动态数据源的实现方法(Mybatis+Druid)

    Spring多数据源实现的方式大概有2中,一种是新建多个MapperScan扫描不同包,另外一种则是通过继承AbstractRoutingDataSource实现动态路由.今天作者主要基于后者做的实现,且方式1的实现比较简单这里不做过多探讨. 实现方式 方式1的实现(核心代码): @Configuration @MapperScan(basePackages = "com.goofly.test1", sqlSessionTemplateRef = "test1SqlSess

  • 通过springboot+mybatis+druid配置动态数据源

    一.建数据库和表 1.数据库demo1放一张user表 SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NU

  • Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解

    依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>p6spy</groupId>

  • SpringBoot整合阿里 Druid 数据源的实例详解

    目录 1. 在容器中注册 DruidDataSource 数据源. 2. Druid 数据源各种属性配置方法 3. 开启Druid的内置监控页面 4. 打开 Druid 监控统计功能 5. 配置Web和Spring关联监控 6. 配置防火墙: 7. 给监控页加入账号密码 前言:今年是我的第二个 1024 了 ,和我一起大声说出来,技术宅改变世界!!! 本节主要介绍的是:SpringBoot 整合阿里 Druid 数据源手动配置方法 1. 在容器中注册 DruidDataSource 数据源. 编

  • SpringBoot整合阿里云视频点播的过程详解

    目录 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频播放凭证 2.6 上传视频到阿里云视频点播服务 3.springboot项目中实践 3.1 上传视频到阿里云 3.2 根据视频id删除视频 1.准备工作 首先需要在阿里云开通视频点播服务: 1.首先,进入到阿里云视频点播平台,点击开通服务,选择按使用流量计费即可 2.开通之后点击进入管理控制台即可 视频点播有什么用? 视频点播(ApsaraV

  • Springboot整合实现邮件发送的原理详解

    目录 开发前准备 基础知识 进阶知识 加入依赖 配置邮件 测试邮件发送 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通过邮件注册账户/找回密码,通过邮件发送订阅信息等等.SpringBoot集成邮件服务非常简单,通过简单的学习即可快速掌握邮件业务类的核心逻辑和企业邮件的日常服务 开发前准备 首先注册发件邮箱并设置客户端授权码,这里以QQ 免费邮箱为例,其他的邮箱的配置也大同小异. 登录 QQ 邮箱,点击设置->账户,开启IMAP/SMTP服务,并生成授权码. 基础知识 电子邮件需要在邮

  • SpringBoot项目使用mybatis-plus代码生成的实例详解

    目录 前言 安装依赖 application.yml添加配置 代码生成实例 代码生成依赖 数据源配置 globalConfig处理通用配置 packageConfig包名设置 strategyConfig配置 小结 总结 前言 mybatis-plus官方地址 https://baomidou.com mybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实现CRUD,自动分页,逻辑删除等功能,更多功能请查阅官方文档 安装依赖 myb

  • Spring AOP 动态多数据源的实例详解

     Spring AOP 动态多数据源的实例详解 当项目中使用到读写分离的时候,我们就会遇到多数据源的问题.多数据源让人最头痛的,不是配置多个数据源,而是如何能灵活动态的切换数据源.例如在一个spring和Mybatis的框架的项目中,我们在spring配置中往往是配置一个dataSource来连接数据库,然后绑定给sessionFactory,在dao层代码中再指定sessionFactory来进行数据库操作. 正如上图所示,每一块都是指定绑死的,如果是多个数据源,也只能是下图中那种方式. 可看

  • SpringBoot 集成Kaptcha实现验证码功能实例详解

    在一个web应用中验证码是一个常见的元素.不管是防止机器人还是爬虫都有一定的作用,我们是自己编写生产验证码的工具类,也可以使用一些比较方便的验证码工具.在网上收集一些资料之后,今天给大家介绍一下kaptcha的和springboot一起使用的简单例子. 准备工作: 1.你要有一个springboot的hello world的工程,并能正常运行. 2.导入kaptcha的maven: <!-- https://mvnrepository.com/artifact/com.github.penggl

  • springboot config 拦截器使用方法实例详解

    本文介绍Spring-Boot中使用拦截器,一般在拦截器中处理跨域处理,允许跨域访问项目,拦截器使用详细资料请查阅官网. 实现自定义拦截器步骤: 1.创建一个类并实现HandlerInterceptor接口. 2.创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法. 2.将自定义的拦截器交由spring管理,然后将对像手动添加到拦截器链中(在addInterceptors方法中添加). 创建拦截器类 package com.exam

  • SpringBoot配置文件的加载位置实例详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正常运行.在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性. SpringBoot启动会扫描以下位置的application.yml或者 application.properties文件作为SpringBoot的默认配置文件. -file:./config/    -file:./

  • springboot Mongodb的集成与使用实例详解

    说说springboot与大叔lind.ddd的渊源 Mongodb在Lind.DDD中被二次封装过(大叔的.net和.net core),将它当成是一种仓储来使用,对于开发人员来说只公开curd几个标准的接口即可,而在springboot框架里,它与大叔lind有些类似之处,同样是被二次封装了,开发人员只需要关注自己的业务即可,而标准的curd操作完成由springboot帮助我们来实现,一般地,我们会设计一个与实体对象的接口仓储,让它去继承mongo的标准接口,然后在springboot的依

  • Admin - SpringBoot + Maven 多启动环境配置实例详解

    一:父级pom.xml文件 resources目录下新建指定文件夹,存放Spring配置文件 <profiles> <profile> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> <activation> <activeByDefault>true</activeByD

随机推荐