v2.7.4
✨ New Features
- New houtu-id module (ported from 3.5.3): Snowflake + SnowflakeX (second-level timestamp + optional custom segment), Redis/DB-backed WorkerIdProvider (lease + heartbeat, 300s expiry / 30s heartbeat), auto-configured via
houtu.id.work-id.type. - web-security signature / anti-replay enhancements: anti-replay extracted into a standalone validator with configurable expiry; signature additional-params and anti-replay fields are now list-based, with multi-field
extraction by source (HEADER/BODY/BOTH). - Configurable exception fallback for web: houtu.web.exception-fallback.
🔧 Refactors
- JsonUtils and web response handling migrated to fastjson2; added Fastjson2HttpMessageConverter.
- MapUtils unified Object→Map conversion; merged and removed IntrospectorUtils.
🐛 Key Fixes (incl. security)
⚠️ SignUtils.verifyMd5 compared raw bytes instead of the MD5 digest, causing signature verification to always fail — fixed.⚠️ SecurityWatchAspect multiple security failures & design flaws fixed (data-security).- loadbalancer: NoClassDefFoundError from SpringCloudNacosLoadBalancerConfiguration when Nacos is absent — fixed.
- core: Transfer* builders dropped in immutable chained calls broke cross-thread context propagation — fixed.
- cache: fragile @lock aspect pointcut binding corrected.
- access-log: removed duplicate AccessLogCombineModelMapConfiguration definition.
- JSON engine switch: JsonUtils / web response serialization moved from Jackson to fastjson2; serialization behavior (date format, null handling, field order) may differ — regression-test downstream API contracts.
- Removed IntrospectorUtils — callers must migrate to MapUtils.
- Removed invalid DateUtils.toDate(long, ZoneId) overload.
- Feign exception-source-trace pass-through retired, and AutoFeign.responseBody() removed.
- Removed GatewaySecurityAutoConfiguration (dead shell).
- loadbalancer hint key unified to spring.cloud.loadbalancer.hint — update old keys.