31 Star 327 Fork 185

码匠君 / dante-engine

2022-06-01 18:12
751495 herodotus 1652323005 码匠君
  • 主要更新
    • [新增] 统一 OkHttp 、HttpClient 自定义配置,实现 OkHttp 、HttpClient 与 RestTemplate 、Openfeign 整合。统一使用 Feign 配置参数,对 OkHttp 、HttpClient 进行参数设定。可通过配置参数,策略化设置使用 OkHttp 还是 HttpClient 作为 RestTemplate 、Openfeign 的基础 HttpClient。
    • [新增] 增加 OkHttp 、HttpClient 平滑退出机制,服务退出前自动销毁已经创建的 Client。将 OkHttp 错误响应与已有错误体系整合,使用统一响应结构返回数据。
    • [新增] 重新定义 Feign 配置,实现 Feign 调用日志输出。统一 Feign 错误解码器,并与已有错误体系整合。
    • [新增] 重构 Feign 与 Sentinel 整合代码,补充 Feign 自动降级处理。增加统一的 fallback 处理机制,无须再进行 FeignClient Fallback 配置。
    • [新增] 增加 @innerloop 注解,实现 Feign 内部接口调用无须进行权限验证,同时 Gateway 以外调用仍需权限验证的机制。无须在 Feign 接口中传递额外参数,注意:该注解只能在 @FeignClient 定义类中使用。
    • [修复] 调整 WebMvc 配置,解决原有配置方式下自定义 interceptor 不生效,导致防刷、前后端数据传输加解密不工作问题。
    • [修复] Dockerfile 和 Docker Compose 配置文件错误。升级依赖的 JDK 版本,去除原有字体下载配置。
    • [优化] 调整 JacksonConfiguration 代码所在的包,让代码归类放置更合理。解决自定义 JacksonConfiguraiton 注入顺序不当而不生效问题。
    • [优化] 用更优的办法,解决在 JDK 17 环境下,因 okhttp 和 okio 版本不匹配,而导致的运行错误问题。
    • [优化] 修改 Nacos 配置,去除上一版本为临时解决 JDK 17 下 Okhttp 兼容问题增加的配置。
    • [优化] 使用 Spring Boot 2.7.0 新的自动配置注册文件,替换 facility-spring-boot-starter、web-spring-boot-starter 等模块 spring.factories 自动配置文件
    • [文档] 补充部分组件简要说明 Readme,帮助快速了解组件用途。
  • 依赖升级
    • Redisson 版本升级至 3.17.3
    • SpringDoc 版本升级至 1.6.9
    • Hutool 版本升级 5.8.2
    • Qiniu-java-sdk 版本升级至 7.10.4
    • Alipay-sdk-java 版本升级至 4.27.1.ALL
最后提交信息为: !14v2.7.0.30
2022-05-28 17:27
751495 herodotus 1652323005 码匠君
  • 重要更新
    • Eurynome Cloud 版本使用 JDK 从 8 升级至 17 (注意:现有版本不在兼容 JDK 8)
  • 主要更新
    • Spring Cloud 版本升级至 2021.0.3
    • Spring Authorization Server 版本升级至 0.3.0
  • 其它更新
    • 根据 Spring Authorization Server 0.3.0 代码的变化,修改和调整现有系统代码
    • 为支持 JDK 17,同时解决老旧依赖包安全漏洞问题,临时删除现有 baidu 短信模块
    • 升级 Kryo 版本至 5.3.0,增加自定义拓展代码,解决 Kryo 现有版本与 JDK 17 不兼容问题而导致的 Jetcache 无法使用问题。
    • 升级 Xnio 版本,解决 Undertow 在 JDK 17 环境下运行,抛出 Could not initialize class org.xnio.channels.Channels 错误,导致服务无法运行问题。
    • 修复 docker-compose 配置错误。
    • 修复现有工程中残留的 FastJson 使用代码。
  • 依赖更新
    • JetCache 版本升级至 2.6.5
    • Tencentcloud-sdk-java 版本升级至 3.1.516
  • 额外说明
    • 因 Spring Authorization Server 0.3.0 默认 JDK 已升级至 11,在 JDK 8 环境下编译出错,已无法兼容 JDK 8,所以考虑升级系统使用 JDK 版本。
    • 2022 年 11 月,Spring Boot 3 将会发布,最低版本要求 JDK 17。因此,直接将 JDK 版本升级至 17,为升级至 Spring Boot 3 提前做铺垫准备。
最后提交信息为: !13v2.7.0.20
2022-05-26 01:11
751495 herodotus 1652323005 码匠君
  • 主要更新
    • Fastjson 版本升级至 1.2.83。消除 Fastjson 反序列化任意代码执行漏洞。
    • 使用 Jackson 全面替换工程中涉及的 Fastjson 代码。保留工程 Fastjson 依赖,用于统一控制其它第三方依赖包中依赖的 Fastjson 版本。
    • 合并原有 assistant-sdk-json 包至 assistant-core。新增 Gson 通用工具类。
    • 重构缓存相关模块,将 redis 和 caffeine 模块独立出来。使用标准化方式重新配置 redis,解决早期在 jar 包模式下,自定义 Redis 配置不生效问题
    • 使用 Spring Boot 2.7.0 新的自动配置注册文件,调整部分 starter 自动注入配置文件
    • 增加基于 Redis 的 Spring Cloud Session 共享基础配置。同时支持 Servlet 和 Webflux
    • 去除重复定义的 JPA 实体自定义 KEY Generator 名称
  • 其它更新
    • Redisson 版本升级 3.17.2
    • Logstash Logback Encoder 版本升级至 7.2
    • WxJava 版本升级至 4.3.4.B
    • MyBatis 版本升级至 3.5.10
    • Tencentcloud-sdk-java 版本升级 3.1.514
    • Qiniu-java-sdk 版本升级至 7.10.3
    • Alipay-sdk-java 版本升级至 4.23.26.ALL
    • com.baidu.aip 版本升级至 4.16.8
最后提交信息为: !12v2.7.0.10
2022-05-20 22:46
751495 herodotus 1652323005 码匠君
  • 主要更新
    • Spring Boot 版本升级至 2.7.0
  • 其它更新
    • 修正新版 Spring Boot 下 applicationContext 获取 Bean RequestMappingHandlerMapping 出错问题。
    • 修正权限数据通过消息队列传递, Jackson 反序列化出错问题。
    • 修正新版 Spring Boot 下,OkHttp 与已有 Spring Cloud 版本不兼容,导致服务无法启动问题。
    • 将 RestTemplate 底层客户端组件,临时由 OkHttp 改为 HttpClient,以规避 Okhttp 与 Spring Cloud 不兼容问题
  • 依赖更新
    • Maven Invoker 版本升级至 3.2.0
    • Minio 版本升级至 8.4.1
    • Hutool 版本升级至 5.8.1
    • Okhttps 版本升级至 3.5.2
    • WxJava 版本升级至 4.3.3.B
    • Alipay-sdk-java 版本升级至 4.23.21.ALL
最后提交信息为: !11v2.7.0.0
预览版本
2022-05-10 22:31
751495 herodotus 1652323005 码匠君
  • 主要更新
    • Spring Boot Admin 版本升级至 2.6.7
    • Nacos 版本更新至 2.1.0, 同步更新 Nacos Docker 版本,新增 Nacos 2.1.0 SQL 脚本。(提示:该版本有数据结构变化,建议备份已有配置信息,重新导入数据库脚本)
    • 增加 Spring Authorization Server 自定义密码认证模式前后端数据加密传输。
    • 增加国密算法 SM2 SM4,采用数字信封技术融合国密 SM2 SM4 算法,实现前后端数据加密传输。保留基于 RSA 和 AES 的前后端加密传输方式,可通过配置选择切换。
    • 整合 rest-sdk-crypto、rest-sdk-secure、assistant-sdk-secure 代码包,形成统一的防护组件,包含前后端数据加密、接口幂等、防刷、Xss 和 SQL 注入防护,以及国密 SM2、SM4、RSA、AES 等加密逻辑。
  • 其它更新
    • Hutool 版本升级至 5.8.0
    • Bce-java-sdk 版本升级至 0.10.208
    • Minio 版本升级至 8.4.0
    • Alipay-sdk-java 版本升级至 4.23.0.ALL
最后提交信息为: !10v2.7.0.RC1
预览版本
2022-04-18 11:08
751495 herodotus 1652323005 码匠君
  • 主要更新
    • [新增] 新增自定义 Spring Authorization Server 授权码模式登录认证页面和授权确认页面
    • [新增] 自定义 Spring Authorization Server 授权码模式登录使用 AES 进行数据加密传输。
    • [新增] 自定义 Spring Authorization Server 授权码模式登录增加验证码支持,支持多种验证码类型,暂不支持行为验证码。
    • [新增] 新增基于 Spring Authorization Server 的单体版应用,做为系统的有益补充,无须搭建复杂基础设施,即可快速搭建运行。
    • [优化] 优化平台错误体系,融合 Spring Authorization Server Form Login 以及验证码相关错误。
    • [优化] 优化调整 Spring Security 相关的依赖,增加自定义 Jackson Module 序列化,解决扩展的 WebAuthenticationDetails 无法反序列化问题。
  • 其它更新
    • Spring Boot Admin 版本升级至 2.6.6
    • Camunda 版本升级至 7.17.0
    • Antisamy 版本升级至 1.6.7
    • logstash-logback-encoder 版本升级至 7.1.1
    • Skywalking 版本升级至 8.10.0
    • Minio 版本升级 8.3.8
    • JetCache 版本升级至 2.6.4
    • Okhttps 版本升级至 3.5.0
    • Wxjava 版本升级至 4.3.0
    • bce-java-sdk 版本升级至 0.10.204
    • qiniu-java-sdk 版本升级至 7.10.0
    • alipay-sdk-java 版本升级至 4.22.86.ALL
  • 尝鲜注意事项
    1. 建议新建目录、单独检出 Eurynome Cloud 2.7.0 分支代码,以防对现有代码产生影响。
    2. 数据表结构以及 Nacos 存在较大变化,建议重新建库、重新导入 Nacos 配置。
    3. 支持 MySQL 数据库,但是尚未进行充份的验证和测试,为规避不必要的问题,建议直接使用 PostgreSQL 数据库。
    4. Herodotus Engine 是独立的、可编译的、组件库式的工程,具体使用需要在其它 Spring Boot 工程中引入相关的组件模块。独立出的各个模块,已经同步至 Maven 中央仓库,检出 Eurynome Cloud 2.7.0 分支代码既可以直接使用。当然,也可以先检出 Herodotus Engine 工程,编译后再进行 Eurynome Cloud 项目的使用。
    5. 想要研究、学习、了解已有的模块代码,可以访问 Herodotus Engine 代码库,地址:https://gitee.com/herodotus/herodotus-engine
最后提交信息为: !9v2.7.0.Beta5
预览版本
2022-04-05 19:36
751495 herodotus 1652323005 码匠君
  • 主要更新
    • [升级] Spring Authorization Server 版本升级至 0.2.3 版本
    • [升级] Spring Boot 版本升级至 2.6.6
    • [新增] 基于 Spring Authorization Server 0.2.3 最新代码调用方式,重构自定义 OAuth2 密码模式
    • [新增] 对 OAuth2 OIDC 认证模式的支持,补充前端 OIDC 认证相关配置操作
    • [新增] OAuth2 OIDC 认证方式下,对应的 /userinfo 接口调用支持 和 客户端注册支持
    • [新增] OAuth2 Authorization Code PKCE 认证模式支持
    • [新增] OAuth2 Client Credentials 模式下,提供 Refresh Token。
    • [新增] OAuth2 Client Credentials 模式下,支持使用 Scope 权限对接口进行验证。
    • [新增] 在已有的 oauth2-sdk-authorization-server 模块下,增加客户端 Scope 的权限配置功能,并与已有的用户权限体系解耦
    • [新增] 自定义 Social Credentials 认证模式,支持手机短信验证码、微信小程序、第三方应用登录
    • [修复] 在 OAuth2 OIDC 认证方式下,/userinfo 接口调用始终为 401 问题。
    • [修复] 自定义 Spring Authorization Server JPA 存储模式参数丢失,遗漏 Scope 设置,导致 /userinfo 调用失败问题
    • [修复] No AuthenticationProvider found for UsernamePasswordAuthenticationToken 问题导致的用户名无法登录问题
    • [修复] 服务启动过程中,由于异步操作与事务操作冲突,导致的 JetCache 数据存储产生并发异常
    • [修复] 改进 @Ss拥抱共同的信仰 注解调用代码,解决由 jdk 自动代理与 CGlib 代理两种代理方式的区别造成代码抛出异常
    • [修复] 改进 OAuth2 基础操作代码,解决 Spring Authorization Server 部分配置不能设置为空值的问题
    • [修复] Spring Cloud Bus 进行远程事件发布时,所有事件监听代码均会接收数据,无法根据服务 Destination 定向处理的问题。
    • [优化] 优化 SecurityGlobalExceptionHandler,支持 OIDC 场景下对错误内容的拦截,并将其融合进整体错误体系
    • [优化] EndpointProperties 配置,区分系统涉及的 url 以及 endpoint,以便支持更多用途
    • [优化] 重构并抽象出策略事件 Event,以规范化大量使用的混合本地时间和远程事件的各类操作。
    • [优化] 规范化所有 Enum 类,使用统一方式为前端提供常量
    • [优化] 优化 OAuth2 应用管理前后端交互相关代码及 OpenApi 文档说明
  • 其它更新
    • Spring boot admin 版本升级至 2.6.4
    • Redisson 版本升级至 3.17.0
    • Antisamy 版本升级至 1.6.6
    • Fastjson 版本升级至 1.2.80
    • Okhttps 版本升级至 3.4.6
    • Bce-java-sdk 版本升级至 0.10.202
    • Alipay-sdk-java 版本升级至 4.22.75.ALL
    • Qiniu-java-sdk 版本升级至 7.9.5
    • Logback 版本升级至 1.2.11
  • 尝鲜注意事项
    1. 建议新建目录、单独检出 Eurynome Cloud 2.7.0 分支代码,以防对现有代码产生影响。
    2. 数据表结构以及 Nacos 存在较大变化,建议重新建库、重新导入 Nacos 配置。
    3. 支持 MySQL 数据库,但是尚未进行充份的验证和测试,为规避不必要的问题,建议直接使用 PostgreSQL 数据库。
    4. Herodotus Engine 是独立的、可编译的、组件库式的工程,具体使用需要在其它 Spring Boot 工程中引入相关的组件模块。独立出的各个模块,已经同步至 Maven 中央仓库,检出 Eurynome Cloud 2.7.0 分支代码既可以直接使用。当然,也可以先检出 Herodotus Engine 工程,编译后再进行 Eurynome Cloud 项目的使用。
    5. 想要研究、学习、了解已有的模块代码,可以访问 Herodotus Engine 代码库,地址:https://gitee.com/herodotus/herodotus-engine
最后提交信息为: !8v2.7.0.Beta4
预览版本
2022-03-23 12:58
751495 herodotus 1652323005 码匠君
  • 重大更新

    1. 全面拥抱 Spring Authorization Server。基于 Spring Authorization Server 重新改版,替换即将停止维护的 Spring Security OAuth2。再也不用担心 Spring Security OAuth2 停止维护了。
    2. 基于 Spring Data JPA,重新构建 Spring Authorization Server 基础数据存储代码。替代原有 JDBC 数据访问方式,破除 Spring Authorization Server 原有数据存储局限,扩展为更符合实际应用的方式。配合自定义多级缓存加持,认证过程更加顺滑。
    3. 基于 Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义“密码”认证模式,以兼容现有基于 OAuth 2 规范的、前后端分离的应用可以平滑使用。
    4. 基于 Spring Authorization Server 新的数据存储结构,重新定义应用管理、客户端管理功能,同步修改前后端代码,管理更加便捷。
    5. 完全遵照 Spring Security 5 以及 Spring Authorization Server 的代码规范,进行 OAuth2 认证服务器核心代码的开发。
    6. 除了支持 Spring Authorization Server 的标准的Token加密校验方式外,还了增加支持自定义证书的 Token 加密方式,可通过配置动态修改。
    7. 重新梳理并调整优化已有配置参数,让工程配置参数更加清晰,层级更加合理。同时,拆分原有使用内部类定义的配置参数,进一步由配置参数导致的代码耦合。
    8. 同步优化 Nacos 配置内容,采用 Spring Authorization Server 标准 Token 校验方式,新服务增加无须再增加配置文件和进行 Client 配置。
    9. 重新梳理本微服务架构内的错误体系及相关代码,已有的 Exception 类放入更合理的保重,无须再经过修改通用基础包中代码,即可便捷的将新的 Exception 融入到系统的错误体系中。同时,仍旧支持自定义错误码以及人机交互友好的自定义错误提示。
    10. 对已有代码进行了深度的“庖丁解牛”。严格遵照“单一职责”原则,根据各个组件的职责以及用途,拆解细化为多个各自独立组件模块,在最大程度上降低代码间的耦合。降低工程代码编译耗时,改进 CICD 效率,提升代码可维护性。
    11. 除已有的组件模块外,对现有工程代码分包也进一步调整,分包和逻辑更加清晰。
  • 其它更新

    • 优化接口权限鉴权逻辑,解决通配符类型权限与全路径权限冲突或重复的问题,实现重复权限剔除并以最大化匹配方式进行权限匹配逻辑。
    • 由于 Spring Authorization Server 机制和模式的变化,原有团队管理功能已不符合实际,相关功能已删除。
    • 前端部分功能配合后端功能变化进行同步修改和改进。
    • 原有 Herodotus Engine 工程中的模块,根据实际代码变更。代码包以及代码进行了一定的优化和整合。
    • 核心依赖 dependencies 采用参数方式,统一定义版本号方便其它依赖工程覆盖和修改版本号。
    • 改进错误信息展示,同时支持 Mvc 和 Json 两种方式,通过浏览器操作的 Mvc 方式错误也可以通过界面展示了。
最后提交信息为: !7v2.7.0.Beta3
预览版本
2022-02-16 14:09
751495 herodotus 1652323005 码匠君
  1. 更正工程 Readme 文档表述错误内容。
  2. 优化自定义 Hibernate Dialect,增加 PostgreSQL 环境下对 CLOB 和 BLOB 数据类型的统一支持。为 Spring Authorization Server 的使用奠定基础
  3. 完善大量 Herodotus Engine 代码中的注释内容,解决代码编译生成 Javadoc 显示大量告警信息问题。
  4. 由于使用组件库的方式,源代码包和 Javadoc 包均已生成。已有微服务工程无须再进行源代码的编译,因此去掉 Eurynome Cloud 主工程源代码编译配置和相关依赖。
最后提交信息为: !6v2.7.0.Beta2
预览版本
2022-02-13 11:06
751495 herodotus 1652323005 码匠君
  • 重要变更

    • 将现有 Eurynome Cloud 微服务架构,进行了深度的“庖丁解牛”。将完整的微服务架构,根据各个组件的职责以及用途,拆解细化为多个各自独立组件模块,在最大程度上降低代码间的耦合。并将组件模块单独提取为一个独立的工程项目。
    • 已有 Eurynome Cloud 微服务架构,根据新的模块化代码结构,进行了重构。
  • 升级目的

    • 2021年11月8日 Spring 官方已经强烈建议使用 Spring Authorization Server 替换已经过时的 Spring Security OAuth2.0。距离 Spring Security OAuth2.0 结束生命周期还有小半年的时间,所以准备用 Spring Authorization Server 对已有的 Eurynome Cloud 微服务架构进行升级
    • Eurynome Cloud 微服务架构,一直遵循“高内聚、低耦合”的原则,在开发和维护的过程中不断优化已有代码,尽一切可能降低代码的耦合性。但是,毕竟所有的代码都堆积在同一个工程中,代码间的过度依赖和互相耦合还是较为严重。这为 Spring Authorization Server 替换 Spring Security OAuth2.0 带来了较大的阻力和难度。
    • 为了进一步降低代码与代码间、模块与模块间的耦合度,进行了本次版本更新,并衍生了 Herodotus Engine 工程。
  • 新模式特点

    1. 严格遵照“单一职责”原则,进行各个模块的划分和代码拆解。
    2. 严格遵循 Spring Boot 编码规则和命名规则。
    3. 大多数模块均支持 @EnableXXX注解 和 starter,不仅提升了模块使用的便捷性,同时在开发使用过程中,让 Spring Bean 的注入顺序更加可控和便于理解。
    4. 借鉴 Spring Boot 模块化设计思想,通过接口化编程、策略化 Bean 注入 以及丰富的自定义 @ConditionalXXX 注解,让模块的添加和使用更加灵活便捷。
    5. 各模块既可以综合在一起使用,也可以在其它 Spring Boot 工程中独立使用
  • 新模式优势

    1. 虽然模块看似很多,但是每个模块职责单一、代码清晰,更有利于聚焦和定位问题。
    2. 通过对微服务架构的“庖丁解牛”,初学者不再需要在代码的海洋里“遨游”,通过针对性地了解各个模块,以点带面快速掌握微服务架构整体结构。
    3. 模块间的依赖极大的降低,想要替换为 Spring Authorization Server,影响到的代码和范围将会很小。该工程也是使用 Spring Authorization Server 的前序工作
    4. 每个模块均是最小化依赖第三包,规避依赖包过度依赖,特别是 starter 过多依赖,导致不可预知、难以调试、不好修改等问题。
    5. 降低微服务系统代码量,独立组件可提前编译并上传至Maven仓库,降低工程代码编译耗时,改进 CICD 效率。
  • 尝鲜注意事项

    1. 建议新建目录、单独检出 Eurynome Cloud 2.7.0 分支代码,以防对现有代码产生影响。
    2. 独立出的各个模块,已经同步至 Maven 中央仓库,检出 Eurynome Cloud 2.7.0 分支代码既可以直接使用。当然,也可以先检出 Herodotus Engine 工程,编译后再进行 Eurynome Cloud 项目的使用。
    3. 想要研究、学习、了解已有的模块代码,可以访问 Herodotus Engine 代码库,地址:https://gitee.com/herodotus/herodotus-engine
    4. 如果之前已经使用、部署过 Eurynome Cloud 微服务系统,那么尝鲜使用 2.7.0.Beta1 版,无须修改和变更数据库。但是需要更新 Nacos 配置,具体变化可自行详细对比工程中Nacos 配置文件。前端工程无须做任何修改,即可使用该版本后端系统。
    5. Herodotus Engine 是独立的、可编译的、组件库式的工程,具体使用需要在其它 Spring Boot 工程中引入相关的组件模块。

友情提示:

本次代码发布,为尝鲜预览版,请结合自己的实际需求,谨慎选择使用!

最后提交信息为: !4v2.7.0.Beta1
Java
1
https://gitee.com/herodotus/dante-engine.git
git@gitee.com:herodotus/dante-engine.git
herodotus
dante-engine
dante-engine

搜索帮助

53164aa7 5694891 3bd8fe86 5694891