基于SpringBoot的XXL-JOB集成mybatis-plus+druid多数据源配置

本文介绍了如何在SpringBoot项目中集成XXL-JOB进行任务调度,并结合mybatis-plus和druid实现多数据源配置。详细步骤包括:项目初始化、依赖引入、配置文件设置、数据源处理、AOP切面处理、Druid监控、mybatis-plus配置、Swagger接口文档以及测试验证。
摘要由CSDN通过智能技术生成

一、简介

xxl-job是通过一个中心式的调度平台,调度多个执行器执行任务,调度中心通过DB锁保证集群分布式调度的一致性,这样扩展执行器会增大DB的压力,但是如果实际上这里数据库只是负责任务的调度执行。但是如果没有大量的执行器的话和任务的情况,是不会造成数据库压力的。实际上大部分公司任务数,执行器并不多(虽然面试经常会问一些高并发的问题)。

相对来说,xxl-job中心式的调度平台轻量级,开箱即用,操作简易,上手快,与SpringBoot有非常好的集成,而且监控界面就集成在调度中心,界面又简洁,对于企业维护起来成本不高,还有失败的邮件告警等等。这就使很多企业选择xxl-job做调度平台。

二、过程

  • 新建一个SpringBoot项目,或使用现有的SpringBoot项目;
  • maven配置pom.xml,导入相关的依赖
  • 编写application.yml,如:项目路径名及端口,mybatisplus配置,mysql多数据源配置。
  • 新建DataSourceContextHolder 用于设置,获取,清空 当前线程内的数据源变量。
  • 新建 MultipleDataSource 实现 AbstractRoutingDataSource 类。重写determineCurrentLookupKey(),通过DataSourceContextHolder 获取数据源变量,用于当作lookupKey取出指定的数据源。
  • 新建DataSourceEnum 用于存放数据源名称。
  • 新建注解 DataSource,用于下面aop类中当作切入点来选择数据源。
  • 编写aop类 --> DataSourceAspect.java
  • 新建并配置以下的三个类

DruidConfiguration:

        StatViewServlet 和 WebStatFilter Druid监控配置和监控过滤器。

MybatisplusConfiguration:

        mybatisplus 分页插件,SQL执行效率插件;
        数据源Bean,MultipleDataSource 注入;
        SqlSessionFactory注入;

SwaggerConfiguration:

        自动生成的接口文档,不需要频繁更新接口文档,保证接口文档与代码的一致。

  • 测试mybatis-plus+多数据源配置。

三、项目结构

四、详细步骤

1.新建一个SpringBoot项目,或使用现有的SpringBoot项目;

2.maven配置pom.xml,导入相关的依赖

<properties>
	<druid.version>1.1.22</druid.version>
	<swagger.version>2.7.0</swagger.version>
</properties>



<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.1.0</version>
</dependency>

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

<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger2</artifactId>
	<version>${swagger.version}</version>
</dependency>
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger-ui</artifactId>
	<version>${swagger.version}</version>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-extension</artifactId>
	<version>3.1.0</version>
</dependency>

3.编写application.yml,如:项目路径名及端口,mybatisplus配置,mysql多数据源配置。

server:
  servlet:
    context-path: /ssm-zyy
spring:
  datasource:
    druid:
      db1:
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/student?serverTimezone=UTC
        initialSize: 5
        minIdle: 5
        maxActive: 20
      db2:
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/teacher?serverTimezone=UTC
        initialSize: 5
        minIdle: 5
        maxActive: 20
mybatis-plus:
  mapper-locations: classpath:/mapper/*Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.xxl.entity
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 0
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 2
    #驼峰下划线转换
    db-column-underline: true
    #mp2.3+ 全局表前缀 mp_
    #table-prefix: mp_
    #刷新mapper 调试神器
    refresh-mapper: true
    #数据库大写下划线转换
    #capital-mode: true
    #逻辑删除配置(下面3个配置)
    logic-delete-value: 4
    logic-not-delete-value: 0
  configuration:
    #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
    map-underscore-to-camel-case: true
    cache-enabled: false
    #配置JdbcTypeForNull, oracle数据库必须配置
    jdbc-type-for-null: 'null'

4.新建DataSourceContextHolder 用于设置,获取,清空 当前线程内的数据源变量。

package com.xxl.datasource.multiple;

/**
   * @Description: 用于设置,获取,清空 当前线程内的数据源变量。
   * @author zhuyangyang
   */
public class DataSourceContextHolder {

    private st
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值