v3.5.3
✨ New Features
- New houtu-id module: Snowflake + SnowflakeX (second-level timestamp + optional custom segment), Redis/DB WorkerIdProvider (lease + heartbeat, 300s expiry / 30s heartbeat), auto-configured via houtu.id.work-id.type; DB lease
acquisition uses streaming paged scan. - New spring-cloud-houtu-http-exchange module: @HttpExchange HTTP Interface client enhancement — auto-registers RestClient/WebClient proxies via an HttpExchangeCustomizer bean, with load-balancing support.
- HttpClient5 made configurable (houtu-utils): connection pool / SSL / timeout / proxy, via new HttpClient5AutoConfiguration and HttpClient5Properties.
- web-security signature / anti-replay enhancements: standalone anti-replay validator with configurable expiry; list-based signature additional-params and anti-replay fields 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.
- http-exchange package moved from feign.* to httpexchange.*.
- loadbalancer HINT interceptor refactored; added Hint customizers for RestClient/WebClient.
- web-security SessionClient now uses RestClient to load session attributes.
🐛 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.
- http-exchange: corrected AutoConfiguration.imports package path; @LoadBalanced builders marked defaultCandidate=false to avoid injection ambiguity.
- access-log: removed duplicate AccessLogCombineModelMapConfiguration definition.
- JSON engine switch: JsonUtils / web serialization moved from Jackson to fastjson2; serialization behavior (date format, null handling, field order) may differ — regression-test downstream API contracts.
- Removed HttpClients utility (houtu-utils) — migrate to the configurable HttpClient5AutoConfiguration / HttpClient5Properties.
- Removed Feign exception-handling module: FeignDelegateDecoder, FeignThroughBusinessException, FeignHandlerExceptionResolverCustomizer, etc., plus exception-source-trace; AutoFeign.responseBody() removed.
- Removed IntrospectorUtils — migrate callers to MapUtils.
- Removed invalid DateUtils.toDate(long, ZoneId) overload.
- Removed GatewaySecurityAutoConfiguration (dead shell).
- actuator removed ExecChainHandler-based HttpClient5 metrics.
- loadbalancer hint key unified to spring.cloud.loadbalancer.hint.
- http-exchange package moved feign.* → httpexchange.* — update direct imports.