# CHANGELOG
# [v6.1.1-RC] 2024.01
- 整理
zhengcheng-parent
项目的系统模块 ums cms frontend - Bumps hutool-core from 5.7.4 to 5.8.20.
- 增加分布式锁的 lock4j (opens new window)
# [v6.1.0] 2022.08
- 增加
幂等或防重复提交
自定义注解@Idempotent
- 新增限流器 自定义注解
@RateLimiter
zc-rsa-encrypt-body-spring-boot-starter
升级为zc-encrypt-body-spring-boot-starter
, 支持AES/RSA- 采用ttl对相应的线程池进行包装(修改之前的漏洞)
- 禁止直接引入
hutool-all
依赖,依照即取即用
的原则引入依赖 - json数据推荐使用
jackson
、fastjson2
,而不要使用fastjson
、hutool-json
等第三方包
# [v6.0.0] 2022.02.24
- 去掉
apollo
的依赖 - 使用
nocos
作为默认的配置中心,注册中心 spring-boot-starter-parent
从2.1.13.RELEASE
升级到 Spring Boot 2.6.3 (opens new window)- 默认引入
jasypt-spring-boot-starter
用于加密数据库密码,缓存密码等敏感信息 - springcloud、springboot、springcloud alibaba版本依赖 (opens new window)
- Spring Cloud Alibaba 2021.0.1.0 升级指南 (opens new window)
- SpringBoot 和 SpringCloud 版本对应信息查询地址 (opens new window)
- knife4j (opens new window)
- Spring Cloud Alibaba 2021.0.1.0 (Spring Boot 2.6.3 | Spring Cloud 2021.0.1 )
# [v5.0.0] 2021.06.19
- 从
zc-core-spring-boot-starter
迁移出zc-apollo-spring-boot-starter
,支持各种配置中心 - 升级
zc-rocket-mq-spring-boot-starter
,使用更便捷 - elasticsearch-rest-high-level-client
- 目前
spring-data-elasticsearch
底层采用es
官方TransportClient
,而es
官方计划放弃TransportClient
,工具以es
官方推荐的RestHighLevelClient
进行封装 - 类似于
Mybatis-Plus
一样,能够极大简化java client API
,并不断更新,让es
更高级的功能更轻松的使用 - 基于
elasticsearch6.4.3
版本进行开发
- 目前
- 默认使用
mapstruct
进行对象属性copy
- 增加
zc-rsa-encrypt-body-spring-boot-starter
对接口入参及返回参加密解密(重要的数据,需要加密) Alibaba Nacos
替换Eureka
注册中心- 配置中心默认使用
apollo
,并提供zc.apollo.refresh.name
刷新指定bean
- 去掉
zc-feign-spring-boot-starter
,改成zc-core-spring-boot-starter
默认配置 zc-web-core-spring-boot-starter
改成zc-core-spring-boot-starter
,新征程微服务核心通用组件。- 去掉
zc-auth-client-spring-boot-starter
认证客户端通用组件。 - 去掉
zc-zk-spring-boot-starter
在日常开发中,很少用到的通用组件。 - 去掉
zc-aliyun-spring-boot-starter
、zc-tencentcloud-spring-boot-starter
等大而全的通用组件,后续按照业务需要提供组件。 - 去掉
zc-cat-spring-boot-starter
,监控使用Apache SkyWalking
(opens new window) - (重点)提高效率:引入
MapStruct
Orika
等Bean
映射工具 BaseMessage
增加timestamp
,为消息幂等使用增加zc-tk-mybatis-spring-boot-starter
,集成MyBatis 通用 Mapper4 (opens new window)修改zc-db-spring-boot-starter
为zc-mybatis-plus-spring-boot-starter
,在zc-web-spring-boot-starter
中去掉zc-db-spring-boot-starter
等默认配置redisson-spring-boot-starter
使用示例文档
# [v4.8.0] 2020.10.15
- (重点)提高效率:引入
MapStruct
Orika
等Bean
映射工具 BaseMessage
增加timestamp
,为消息幂等使用- 增加
zc-tk-mybatis-spring-boot-starter
,集成MyBatis 通用 Mapper4 (opens new window) - 修改
zc-db-spring-boot-starter
为zc-mybatis-plus-spring-boot-starter
,在zc-web-spring-boot-starter
中去掉zc-db-spring-boot-starter
等默认配置 redisson-spring-boot-starter
使用示例文档
# [v4.7.0] 2020.08.01
- 修复全局Controller打印日志在异常的情况下无法打印的问题
- 以
Dubbo
暴露服务的方式使用Feign
Alibaba Nacos
替换Eureka
注册中心- 引入
spring cloud alibaba
依赖 - commons-beanutils 升级到1.9.4,解决在Apache Commons Beanutils 1.9.2中,添加了一个特殊的BeanIntrospector类,该类允许抑制攻击者通过所有Java对象上可用的class属性访问类加载器的能力。但是,默认情况下,我们没有使用PropertyUtilsBean的特性。
- mybatis-plus 升级到3.3.2
# [v4.6.0] 2020.06.04
- 使用EasyCode,一个字爽
- 去掉全局返回值的封装,为feign的继承做准备
- 增加
com.zhengcheng.common.message.BaseMessage
,消息可以继承此类,其中消息ID作用为防止重复消费 - 去掉
FeignAutoConfiguration
中关于auth的配置,后续在网关处理用户登录授权,并传递用户信息的问题 - 在
zc-web-spring-boot-starter
剔除zc-auth-client-spring-boot-starter
,单独引用;可以网关引入后,不需要在每个服务中单独调用(推荐)。
<dependency>
<groupId>com.zhengcheng</groupId>
<artifactId>zc-auth-client-spring-boot-starter</artifactId>
</dependency>
1
2
3
4
2
3
4
- 修复
GlobalResponseBodyAdvice
统一返回结果后,String的报错的问题
{
"code": 500,
"message": "系统升级中,请稍后重试!",
"data": "com.zhengcheng.common.web.Result cannot be cast to java.lang.String",
"requestId": "6823280748b049109b0b0f40439c0265"
}
1
2
3
4
5
6
2
3
4
5
6
- 设置返回数据的类型以及编码
produces = "application/json;charset=UTF-8"
,示例如下:
@GetMapping(value = "/str", produces = "application/json;charset=UTF-8")
public String str(String v) {
// 经过压测,在吞吐量为157.3/sec 的情况下,被限流的比例为36.44%,符合预期
return "测试";
}
1
2
3
4
5
2
3
4
5
- 去掉
zc-redis-spring-boot-starter
中j2cache
,如果需要用,则maven添加:
<dependency>
<groupId>net.oschina.j2cache</groupId>
<artifactId>j2cache-spring-boot2-starter</artifactId>
</dependency>
<dependency>
<groupId>net.oschina.j2cache</groupId>
<artifactId>j2cache-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 增加
RedissonAutoConfiguration
配置,增加RedissonDistributedRLock
的配置 zc-redis-spring-boot-starter
更名为zc-cache-spring-boot-starter
# [v4.5.0] 2020.5.22
- 增加
GlobalResponseBodyAdvice
统一返回结果处理 - 增加
ZkDistributedLock
zk分布式锁 - 增加
zc-zk-spring-boot-starter
Zookeeper通用组件 - j2cache-spring-boot2-starter (opens new window)
- 增加
zc-dict-spring-boot-starter
数据字典通用组件,架构设计 (opens new window) - 内存级缓存 Springboot2.x 使用
Caffeine
- 修改
RedisTemplate<String, Object>
value的序列化方式(不兼容老版本,有可能出现value反序列化异常)
# [v4.4.0] 2020.5.7
- 增加
RequestLimit
注解,实现接口访问量控制 CuratorDistributedLock
RedisBloomFilter
BloomFilterHelper
即将作废SignAuthInterceptor
简化对接成本;- 增加
SignAuthUtils
工具类 zc-feign-spring-boot-starter
远程通信通用组件,默认配置中增加SignAuth的参数,详细见com.zhengcheng.feign.FeignAutoConfiguration
,其中默认的秘钥为:security.api.key,请在配置文件中写入秘钥,默认为zhengcheng
- 技术分享 API接口防止参数篡改和重放攻击 (opens new window)
- 删除
FeignInterceptorConfig
, 默认配置中增加 Feign OAuth2 拦截器 TraceIdInterceptor
增加applicationName
构造参数,修复无法打印项目名的问题- 最终一致性的实现方案 (opens new window)
# [v4.3.0] 2020.4.18
- 新增
ExecutorMdcTaskBuilder
({@link ThreadPoolTaskExecutor} 建造者) 打印MDC的线程池任务建造者 - 删除zc-async-spring-boot-starter,异步线程池的配置简化并交给开发者
- Feign日志打印成INFO,方便线上问题定位
- 增加MDC链路traceId,返回值也增加request_id,方便线上问题定位,参考腾讯云
- zc-web-springboot-starter 聚合通用组件,定制化Springboot2.x 开发的最小框架支持,Sample项目 (opens new window)
- 接口签名校验,例如微信支付接口的签名校验
SignAuthInterceptor
- 去掉
WebAutoConfiguration
上@EnableApolloConfig
的配置,交给开发者自主选择 - 去掉
apollo
配置中心依赖包,交给开发者自主选择
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-core</artifactId>
</dependency>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 去掉
VI
依赖包,交给开发者自主选择
<dependency>
<groupId>com.ctrip.framework</groupId>
<artifactId>cornerstone</artifactId>
</dependency>
1
2
3
4
2
3
4
- 去掉
eureka-client
,交给开发者自主选择(@EnableEurekaClient
)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1
2
3
4
2
3
4
- 微信开发工具升级
3.7.0
微信开发 Java SDK(开发工具包) (opens new window) - hutool 升级到
5.3.2
- 增加
PageResult
分页结果 - 增加
feign
重试,只会对GET请求重试,提高系统的可用性
# [v4.1.0] 2020.4.11
SpringCloud
升级到Greenwich.SR4
SpringBoot
升级到2.1.11.RELEASE
fastjson
升级1.2.68
,SpringBoot
使用默认的jackson
,fastjson
总是有安全的漏洞,需要升级,所以重要的地方舍弃使用。SpringBoot
jackson
的配置如下:
spring:
jackson:
#参数意义:
#JsonInclude.Include.ALWAYS 默认
#JsonInclude.Include.NON_DEFAULT 属性为默认值不序列化
#JsonInclude.Include.NON_EMPTY 属性为 空(””) 或者为 NULL 都不序列化
#JsonInclude.Include.NON_NULL 属性为NULL 不序列化
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 去掉
MobileMask
注解 - 取消
feign
重试 - 增加分页返回结果
PageInfo
- 修改
Event
为组合Component
的注解 - 新增
RocketmqListener
的注解,可以直接在方法上,减少代码中Class的个数
# [v3.19.0] 2020.4.10
- 其他