Skip to content

v3.5.3

Choose a tag to compare

@lujiafa lujiafa released this 23 Jun 12:43

✨ 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.

⚠️ Breaking Changes / Migration Notes (must go in Release Notes)

  1. 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.
  2. Removed HttpClients utility (houtu-utils) — migrate to the configurable HttpClient5AutoConfiguration / HttpClient5Properties.
  3. Removed Feign exception-handling module: FeignDelegateDecoder, FeignThroughBusinessException, FeignHandlerExceptionResolverCustomizer, etc., plus exception-source-trace; AutoFeign.responseBody() removed.
  4. Removed IntrospectorUtils — migrate callers to MapUtils.
  5. Removed invalid DateUtils.toDate(long, ZoneId) overload.
  6. Removed GatewaySecurityAutoConfiguration (dead shell).
  7. actuator removed ExecChainHandler-based HttpClient5 metrics.
  8. loadbalancer hint key unified to spring.cloud.loadbalancer.hint.
  9. http-exchange package moved feign.* → httpexchange.* — update direct imports.