依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/>
</parent>
<properties>
<!--项目打包跳过test-->
<maven.test.skip>true</maven.test.skip>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.18.26</lombok.version>
<mybatis.plus.version>3.5.2</mybatis.plus.version>
<mysql.version>8.0.30</mysql.version>
<hutool.version>5.8.3</hutool.version>
<fastjson.version>2.0.25</fastjson.version>
<logback.version>1.2.3</logback.version>
<jackson.version>2.14.2</jackson.version>
</properties>
<dependencies>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--hutool工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<!--web工程依赖依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--aop依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--单元测试依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
<!-- xxl-job 核心依赖 -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.0</version>
</dependency>
<!--邮件发送-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.43</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies>
yml文件
# 服务端口号
server:
port: 9898 #端口号配置
servlet:
context-path: / #访问路径
spring:
application:
name: ordersapi #应用名称
datasource:
username: root #用户名
password: 1234 #用户密码
driver-class-name: com.mysql.cj.jdbc.Driver #数据源
url: jdbc:mysql://localhost:3306/day0326?serverTimezone=Asia/Shanghai&useTimezone=true&useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true #连接地址
type: com.zaxxer.hikari.HikariDataSource #连接池类型
# 日期格式与时区配置
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd
# 图片上传配置
upload:
path: D:/pic/
# servlet:
# multipart:
# max-file-size: 10MB #上传文件的大小
# max-request-size: 100MB #一次请求的大小
#resources:
#static-locations:
#file: ///D:/pic/
file:
staticAccessPath:
/pic/**
uploadRealPath:
file:D:/pic/
#相关的eureka配置
eureka:
client:
register-with-eureka: true #注册到Eureka的注册中心
fetch-registry: true #获取注册实例列表
service-url:
defaultZone: http://user:123456@localhost:8761/eureka/ #配置注册中心地址
#defaultZone: http://user:user@localhost:8761/eureka/ #配置注册中心地址
#defaultZone: http://user:user@node1:8762/eureka/,http://user:user@node2:8763/eureka/,http://user:user@node3:8764/eureka/
#---
##监控程序配置
#management:
# endpoints:
# web:
# exposure:
# include: '*' # health info
# #base-path: actuator #默认访问的路径地址
# endpoint:
# health:
# show-details: always
#
##连接的服务器端
#spring:
# boot:
# admin:
# client:
# url: http://localhost:9301 #配置admin-server地址
---
#日志
logging:
file:
name: userapi.log
path: D:/opt/mycode/logs/
level:
root: info
---
#全局配置
ribbon:
ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)
ReadTimeout: 3000 #服务请求处理超时时间(毫秒)
OkToRetryOnAllOperations: true #对超时请求启用重试机制
MaxAutoRetriesNextServer: 1 #切换重试实例的最大个数
MaxAutoRetries: 1 # 切换实例后重试最大次数
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改负载均衡算法
#指定服务的配置
wish-userserver:
ribbon:
ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)
ReadTimeout: 3000 #服务请求处理超时时间(毫秒)
OkToRetryOnAllOperations: true #对超时请求启用重试机制
MaxAutoRetriesNextServer: 1 #切换重试实例的最大个数
MaxAutoRetries: 1 # 切换实例后重试最大次数
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改负载均衡算法
#com.netflix.loadbalancer.RandomRule:从提供服务的实例中以随机的方式;
#com.netflix.loadbalancer.RoundRobinRule:以线性轮询的方式,就是维护一个计数器,从提供服务的实例中按顺序选取,第一次选第一个,第二次选第二个,以此类推,到最后一个以后再从头来过;
#com.netflix.loadbalancer.RetryRule:在RoundRobinRule的基础上添加重试机制,即在指定的重试时间内,反复使用线性轮询策略来选择可用实例;
#com.netflix.loadbalancer.WeightedResponseTimeRule:对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择;
#com.netflix.loadbalancer.BestAvailableRule:选择并发较小的实例;
#com.netflix.loadbalancer.AvailabilityFilteringRule:先过滤掉故障实例,再选择并发较小的实例;
#com.netflix.loadbalancer.ZoneAwareLoadBalancer:采用双重过滤,同时过滤不是同一区域的实例和故障实例,选择并发较小的实例
# feign的服务降级与压缩配置
feign:
hystrix:
enabled: true #开启服务降级
compression:
request:
enabled: false #是否对请求进行GZIP压缩
mime-types: text/xml,application/xml,application/json #指定压缩的请求数据类型
min-request-size: 2048 #超过该大小的请求会被压缩
response:
enabled: false #是否对响应进行GZIP压缩
# mybatis-plus配置
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml #读取mapper的映射文件
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印的日志文件
#feign日志级别调试
#logging:
# level:
# org.example.wish.fegin.UserFegin: debug
---
# 链路追踪配置
#spring:
# zipkin:
# base-url: http://localhost:9411
# sleuth:
# sampler:
# probability: 0.1 #设置Sleuth的抽样收集概率
---
# redis配置
spring:
redis:
host: localhost
port: 6379
database: 0
#---
## rocketmq配置
#rocketmq:
# name-server: 127.0.0.1:9876 # rocketMQ 名称服务器
# producer:
# group: pay_order # 发送组
# topic: payOrder # topic 相当于一个地址
# retry-times-when-send-failed: 5 # 错了以后重试几次
# consumer:
# group: test-consumer #消费者组
# topic: test-topic # 消费topic
---
#邮箱配置
spring:
mail:
host: smtp.qq.com #平台地址,这里用的是qq邮箱,使用其他邮箱请更换
username: 1184895576@qq.com #改成自己的邮箱
password: xpywvabakozfjbig #发送短信后它给你的授权码 填写到这里
properties:
mail:smtp:ssl:enalbe: true #这东西不用改
default-encoding: utf-8 #编码格式
---
## kafka配置
#spring:
# kafka:
# bootstrap-servers: 192.168.184.129:9092
# producer:
# value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
## acks: 1 #all 体现集群
# #0 只要发送就认为成功 消息会丢失
# #1 只要发送到leader就成功,如果此时leader的broker宕机,消息也会丢失
# # -1/all 只能在集群中,才能体现出消息不会丢失 必须确保有2个及以上的follower
# retries: 3 # 表示生产者在发送消息时,出现异常时的重试次数。默认值为0,表示不进行重试。
# #可以将其设置为大于0的值,以避免由于网络等原因导致的消息丢失。
# consumer:
# value-deserializer: org.apache.kafka.common.serialization.ByteArrayDeserializer
# auto-offset-reset: earliest
## #latest 当enable-auto-commit: off的时候,从topic最早的可用偏移量开始消费。
## #earliest 从topic最新的消息偏移量开始消费。
## #exception
## #none 如果消费者组找不到之前的消费偏移量,抛出异常。
## #latest,earliest对于同一个消费者组,若已有提交的offset,则从提交的offset开始接着消费
# enable-auto-commit: false #false 交给spring提交 on kafka提交 手动提交
## #auto-commit-interval: 5000 #自动提交时间
# listener:
# ack-mode: MANUAL_IMMEDIATE #这个只有当enable-auto-commit: false才能生效
#spring-kafka组件有下面几种AckMode提交模式:都是针对.enable-auto-commit设置为false才适用,如果true是kafka根据自身配置来提交的。默认AckMode是BATCH
#MANUAL poll()拉取一批消息,处理完业务后,手动调用Acknowledgment.acknowledge()先将offset存放到map本地缓存,在下一次poll之前从缓存拿出来批量提交 这个只有当enable-auto-commit: false才能生效
#MANUAL_IMMEDIATE 每处理完业务手动调用Acknowledgment.acknowledge()后立即提交
#RECORD 当每一条记录被消费者监听器(ListenerConsumer)处理之后提交
#BATCH 当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后提交
#TIME 当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后,距离上次提交时间大于TIME时提交
#COUNT 当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后,被处理record数量大于等于COUNT时提交
#COUNT_TIME TIME或COUNT满足其中一个时提交
#---
# #elasticsearch配置
#spring:
# elasticsearch:
# rest:
# uris: http://192.168.184.128:9200
#---
## 工作流配置
#spring:
# activiti:
# #1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
# #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
# #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
# #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
# database-schema-update: true
# #检测历史表是否存在 activiti7默认没有开启数据库历史记录 启动数据库历史记录,需要手动配置开启
# db-history-used: true
# #记录历史等级 可配置的历史级别有none, activity, audit, full
# #none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
# #activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
# #audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
# #full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
# history-level: full
# #校验流程文件,默认校验resources下的processes文件夹里的流程文件
# check-process-definitions: false
---
# windows pdf 预览 下载 签章 数字签名
pdf:
enable: true
domain: http://localhost:${server.port}/
pdf-ks: D:\test\store\ks
pdf-ks-pass: 123456
x: 400
y: 400
width: 200
height: 200
sign-pic-name: sign.png
path: D:\test\sign\
font: D:\test\font\simsun.ttc
#---
## linux pdf 预览 下载 签章 数字签名
#pdf:
# enable: true
# domain: 192.168.184.129:9100
# pdf-ks: /opt/mycode/store
# pdf-ks-pass: 123456
# x: 400
# y: 400
# width: 200
# height: 200
# sign-pic-name: /opt/mycode/sign.png
# path: /opt/mycode/
# font: /opt/mycode/font/simsun.ttc
---
# xxl-job配置
#logging:
# config: classpath:logback.xml
xxl:
job:
admin:
addresses: http://127.0.0.1:7777/xxl-job-admin #xxl-job-admin地址
accessToken: default_token
executor:
appname: wish-executor #执行器名称
address: ### xxl-job, access token
ip:
port: 9999 #端口号
logpath: /data/applogs/xxl-job/jobhandler #路径地址
logretentiondays: 30
---
# 大文件上传配置
spring:
servlet:
multipart:
max-file-size: 2048MB #上传大小限制
max-request-size: 3000MB # 请求大小限制
file:
enable: true
path: D:/uploadPath/
domain: http://localhost:${server.port}/uploadPath/
---
spring:
mvc:
static-path-pattern: /uploadPath/**
resources:
static-locations: file:D:/uploadPath/
---
spring:
profiles:
active: xxl,mail
启动类
响应结果集