拦截器的实现
1.新建工程模块interceptor
准备:数据库数据
CREATE DATABASE admin_bd
USE admin_bd
DROP TABLE IF EXISTS `admin_user`;
CREATE TABLE `admin_user` (
`admin_user_seq` INT(11) NOT NULL AUTO_INCREMENT,
`admin_user_no` VARCHAR(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`admin_user_name` VARCHAR(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`admin_user_position` VARCHAR(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`admin_user_phone` VARCHAR(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`admin_user_email` VARCHAR(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`admin_user_password` VARCHAR(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`smed_role_info_bd_seq` INT(11) NOT NULL,
`role_info_name` VARCHAR(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`admin_user_status_itype` TINYINT(2) NOT NULL,
`create_by` BIGINT(20) NOT NULL,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_by` BIGINT(20) DEFAULT NULL,
`update_time` TIMESTAMP NULL DEFAULT NULL,
`active_flag` CHAR(1) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`admin_user_seq`),
KEY `smed_boss_user_bd_ix1` (`admin_user_phone`),
KEY `smed_boss_user_bd_ix2` (`admin_user_no`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `admin_user`(`admin_user_no`,`admin_user_name`,`admin_user_position`,`admin_user_phone`,`admin_user_email`,`admin_user_password`,`smed_role_info_bd_seq`,`role_info_name`,
`admin_user_status_itype`,`create_by`,`create_time`,`active_flag`) VALUES ('super','super','super','15177778888','56565@qq.com','9f95c68e7ceff25f65962a24e21b85c1',35,'最新',1,1,NOW(),'y')
2.在pom.xml
文件中导入项目需要的相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>interceptor</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 统一版本管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- jdk版本 -->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- web 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- springboot集成单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<!-- mybatis启动器-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mysql连接器-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- swaggerUi接口文档的以来-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!--springboot集成redis启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<!-- commons包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!--json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
</dependencies>
</project>
3.编写配置文件application.yml
spring.datasource:
url: jdbc:mysql://127.0.0.1:3306/admin_bd?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&noAccessToProcedureBodies=true&zeroDateTimeBehavior=convertToNull
username: root
password: root
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
hikari:
connectionTimeout: 30000
idleTimeout: 600000
maxLifetime: 1800000
maximumPoolSize: 50
minimumIdle: 10
validationTimeout: 5000
spring.redis:
database: 0
host: 127.0.0.1
port: 6379
password:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
server:
port: 10086
4.配置swagger接口文档
配置接口文档主要是为了测试方便,以及模拟项目中在请求头中获取token和userId
package com.demo.interceptor.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List