4 Star 6 Fork 3

ChinaLym / shoulder-framework

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
CHANGELOG.MD 10.75 KB
Copy Edit Web IDE Raw Blame History

更新记录

0.7(PLAN)

  • 依赖

    • spring boot: 升级到 2.3.10
    • spring cloud: 升级到 hoxton 10
  • DB

    • 自动判断是否存在分布式事务问题,默认仅开发时生效
      • TransactionSynchronizationManager.isActualTransactionActive() 判断是否有 @Transactional
      • 且该方法是写的(CUD)支持扩展这里
      • 拿到数据源
      • 判断是否是同一个事务管理器(不是则可能有分布式事务问题)
        • !null && 正在事务 && TransactionSynchronizationManager.getResource(dataSource) == null || 它的 isTransactionActive 为 false
  • 操作日志

    • 优化扩展,支持自定义解析逻辑,以支持在记录操作日志时,同时记录其他信息
    • DTO添加更多常用字段,记录更详细
  • batch

    • 批处理模块支持导出导出,进度条等基本逻辑,上升至无依赖任务批处理
  • log

    • Logger 分割,定义更明确,以满足更多的日志文件划分方式,以应对大业务量的场景
    • 新增 缓存(redis) 访问日志输出,默认只对慢查询、大数据做一定记录
    • 新增统计日志(stat-log),REST 分钟级访问统计
    • 异常日志新增链路上下文打印
    • 追踪日志更详细:digest、stat
  • core

    • 错误码,默认日志级别调整为 ERROR
    • 增加错误上下文
    • 结合世界国际化组织标准增加跨地域上下文以增强多语言、全球化能力
  • 安全与加密-脱敏

    • 敏感词过滤
    • 字段名-脱敏 shielder 算法id-脱敏算法实现
    • 注解形式,输出时自动脱敏
  • 扩展模块

    • 后台配置:开箱即用的轻量级配置管理模块
  • redis 连接池事件监听聚合接口

0.6 (2021年1月4日 发布)

0.6 版本主要致力于基本能力的完善,也是标志着基本使用方式确定,具体的实现可能有部分调整,方向不再大幅变动。

上下文工具类很早就提交了,但一直未支持使用,但模块中又依赖上下文,因此上下文进行重构,准备落地使用

操作日志在 0.1 添加了,0.5 对其进行了调整,0.6 中将结合实际使用情况,进行调整,并添加基本实现,重构定义部分接口,如operationLogger接口,使其更符合整体的设计,提升扩展性和易用性。

加解密部分代码规范性重构:密钥协商可以定制协商 / 加密算法、允许增删支持的算法;优化api更易于使用;符合http规范;

  • 接口文档选型

    • 注解同时支持 swagger3(主)/swagger2
    • 注释支持 smartDoc
    • 可视化界面默认使用 knife4j
  • core:

    • 使用 AppContext 作为变量共享中心,且支持自动跨线程
    • DelayTask 现在默认自动开启
    • 新增线程池增强器接口,可以在这里定义全局线程增强
    • 错误码
      • 目前不推荐错误码与 log 级别 / HTTP 响应码绑定
      • 新增错误码插件,在编译时,自动根据注释生成错误码文档,供项目使用
  • 操作日志框架重构

    • 日志上下文增加语法糖方法
    • 包结构重构
    • logger 增加 bufferedLogger,优化以 HTTP / MQ / Jdbc 形式记录日志的频繁写入性能
    • 当 @OperationLog 所在方法抛出异常时,若为 ErrorCode 及其子类,则自动记录错误码
      • 更换跨线程增强方式,使用 shoulder-core 中定义的扩展点,提高 shoulder 框架内聚
  • web

    • 默认的 RestController 全局异常处理仅对 json 格式响应支持
  • validate

    • 通用错误码提供枚举类
  • crypto

    • 对称加解密较大重构(最后一个参数为 明文/密文),使用接口,而非静态工具类
    • 统一参数位置,统一使用方法的最后一个参数作为待处理的明文/密文
    • 密钥协商
      • 完善协商协议,不再是固定使用最高银行加密级别 AES256 CBC,而是根据协商双发都支持的算法随机选择(可自行替换成安全性更低地以获得更高的性能)
      • 修改协商请求头前缀为 "X-S-"

0.5 (2020年12月6日 发布)

更新内容较多:拓展新功能,维护已有模块的设计,对接错误码等规范,修复多个缺陷。

亮点:

  • 分布式id生成器性能提升(魔改雪花算法吊打各家实现)
  • 基于SpringSecurity 安全的认证,该版本已经稳定,且实现了部分默认配置。目前支持 session / common token / jwt / jwk。
  • 分布式锁(兼容jdk接口:可重入的redis实现,兼顾嵌套事务的数据库实现)
  • 快速接入批量业务
  • 操作日志框架支持嵌套调用(参考了 Spring 的事务传播)

大概改动

  • 批量业务抽象支持

    • csv / excel 解析
    • 批量校验、查询进度、导入、查询进度、查询导入历史、导入详情
    • 导出
  • 全局id生成器

    • 性能提升
    • 增加透支消费上限配置、智能阻塞
    • 超高压力下识别缓存buffer过度消费(只在单节点亿级/s以上的压测中才可能出现)
  • web

    • 全局异常拦截:现在会对 JSR303 校验框架抛出的异常做详细日志记录以及返回值封装
    • 日志记录:支持记录 MultiPartFile 类型参数信息
  • 校验框架

    • 参数相关错误码移动至 validate
    • 提供默认翻译项(通过插件生成)
    • @MimeType 改为 @FileType 并增加更多校验能力
      • 文件类型检查从 mime 类型,改为后缀名 allowList -> allowSuffix
      • 增加对文件头的检查
      • 增加对文件大小的检查
        • 增加对文件名称格式限制检查(支持正则,包含允许字符检查、禁止字符检查)
        • 增加对批量文件上传校验支持
  • 日志框架

    • 为 debug、info、warn 级别增加类似 errorWitErrorCode 的方法,支持更低级别打印错误码
    • core 中提供 LogHelper 用于生成方法栈目标栈的跳转链接(从 http 的 HttpLogHelper 迁移)
  • 优化基础包中的非必选强依赖

    • 如 spring,降低最小使用依赖成本
  • 默认使用 Undertow 而非 Tomcat

    • 取消各个模块对 tomcat 的依赖
    • 注意 undertow 不支持jsp
    • 废弃该需求,不实现:默认 tomcat、若希望使用 undertow 使用者自行排除即可
  • 分布式锁

    • 提供锁的概念、接口定义
    • 默认实现
      • JDK 适配(非分布式)
      • 基于内存(伪分布式,默认)
      • 基于数据库(依赖了数据库则默认使用该方式)
      • 基于 Redis
  • 加解密

    • 修复本地存储加解密中-文件存储-未配置存储路径时未能正确新建
    • 本地存储加解密中-文件存储-支持多个工程同时启动且共享一个文件
    • 本地存储加解密中-文件存储-内容为空(如手动清空,但不删除该文件)导致的加载失败
    • 修复密钥交换流程错误bug
    • 密钥交换流程增加额外处理:服务器缓存意外失效后,客户端自动清理无效缓存并重新发起协商(如 redis 宕机重启,且恰好服务端密钥交换缓存丢失,而客户端密钥交换缓存还在)
    • 删除加解密门面接口,因为可能未使用所有加密方式
    • 默认项目启动后,异步初始化本地加解密,以提升第一次调用性能
  • 安全与认证

    • 提供 Token 认证方式默认实现和装配
    • 完善 session 认证中条件装配
    • 添加基于 Session 认证 Demo
    • 添加基于 Token 认证 Demo
  • 验证码框架

    • 支持一个 url 需要校验多种验证码
  • 操作日志框架

    • 支持加了该注解的方法 A 中调用 加了该注解的方法 B 时
    • 支持自定义业务传播行为(日志上下文创建策略),接口:OperationContextStrategy
    • 调整日志上下文的包名、创建器类名 OperationLogBuilder -> OperationLogFactory

0.4 (stable)

  • 提供 starters

    • mysql
  • 全局唯一标识生成器(分布式全局id)

    • 高性能可配置的全局递增唯一 id 生成器(单节点持续高压场景为 twitter 雪花算法两百万倍+、JDK UUID的百倍+!、百度开源算法的 60 倍!)。
    • 优雅处理时钟回拨,支持突发峰值、持续高压,支持扩展
    • todo 多实例小场景、分布式默认装配
  • operation-log 模块

  • 完善安全认证实现

    • 重构安全认证模块
    • 支持自签 Oauth2 JWT Token 授权
    • session 支持集群模式
    • security 的全局异常处理器
    • successHandler 同时支持 session、token(TokenAuthenticationSuccessHandler
  • 接口响应自动包装支持配置排除路径

  • 框架异常整理

    • 供使用者直接使用的工具
    • 抛出带错误码的 RuntimeException
  • 翻译支持spring原生用法、增加识别jar内多语言资源文件夹

  • 增加 maven archetype,便于快速创建工程

0.3

  • 数据库功能增强:分页、自动补充创建者、修改者、创建时间、修改时间
  • 更简单的服务间安全传输(基于ECDH,jdk15中才加的功能,shoulder已经在jdk8中实现,且为Spring Boot 提供了开箱即用的能力)
  • 增加 ColorStringBuilder,方便构建彩色输出
  • 优化新增自动日志与美化(自动区分本地和生产环境)
    • HTTP 接口自动记录日志支持单行格式
    • 自动记录 RestTemplate 接口调用,默认支持彩色和单行两种
    • 重构日志自动记录类关系,便于二次扩展,自定义日志规则(如某些用户记录、特定请求记录等)与格式
  • 完善安全认证实现,browser可用
  • 完善验证码框架,可用
  • 增加监控模块(线程池监控、错误码、异常监控),基于 micrometer,可使用 Prometheus 等对接
  • 升级依赖 Spring Boot-> 2.3.4, Cloud-> H.S8,修复 RFD 漏洞
  • 废弃 trace、minio、aopx 三个模块,移动至 shoulder-platform 中,Spring 高级特性使用保留原生用法

0.2(2020年9月10日)

  • 数据库功能支撑

    • 连接池选型为 beeCP,近似 spring boot 默认连接池两倍性能
    • 引入 mybatis-plus 增强 mybatis
    • 数据源动态切换
  • 更舒服的控制台日志(针对开发阶段、基于色彩学,DEBUG=淡灰色;INFO=控制台默认色;Warn=蓝色;异常/Error=粗体、红色;行号:蓝色;线程名称/线程id/时间=跟随日志级别)

  • JSON 工具支持自动扩展

  • 新增http接口自动记录日志 Controller日志

    • 开发阶段更好的调试体验
    • 支持IDE点击打印日志,自动跳转代码位置
  • 可监控、动态调整的线程池

    • 可实现负载告警、动态扩容、资源释放、执行统计
  • 将 spring-web 日志级别提高为INFO,防止无用日志过多

  • 添加监控对接技术方案

  • 已知问题

    • 版本号不正确(snapshot)
    • 签名异常

0.1 (2020年8月5日)

首次发布,将大多数基本功能测试并发布

Comment ( 0 )

Sign in for post a comment

Java
1
https://gitee.com/ChinaLym/shoulder-framework.git
git@gitee.com:ChinaLym/shoulder-framework.git
ChinaLym
shoulder-framework
shoulder-framework
master

Search