Skip to main content

v5.3.0 (2026-10-05)

<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-web</artifactId>
<version>5.3.0</version>
</dependency>

Changes​

  • New Features
    • Support method-level @MappingTo routes.
    • Support class-level path prefixes.
    • Support automatic route discovery.
    • Allow the same path with different HTTP methods.
    • Check route conflicts at startup.
    • Add MVC interceptors through HandlerInterceptor.
    • Add centralized exception handling through ExceptionHandler.
    • Add Invoker.setSkipRender() to skip result rendering.
    • Support CacheControl policies for static resources.
    • Support @Inject on @Bean factory parameters.
  • Bug Fixes
    • Initialize unreferenced singleton @Bean instances at startup.
    • Render exception handler results from void Actions.
    • Clear the parameter cache when requests end.
    • Fix a null-pointer error when resolving content types without a matched Action.
    • Fix missing or incorrect Web URL logs at Boot startup.
  • Improvements
    • Unify MVC result rendering.
    • Separate asynchronous error handling from completion.
    • Embed and isolate Boot Loader runtime dependencies.
    • Upgrade Cobble to 5.0.4.
    • Move IDE code style configurations to community.

Upgrade Notes​

  • ResourceBinder.cacheControl now accepts CacheControl. See static resources.
  • Singleton @Bean instances and their initMethod callbacks now initialize at startup. Review initialization timing.
  • Custom Invoker implementations must provide setSkipRender() and isSkipRender().
  • Custom WebApiBinder implementations must provide bindInterceptor(...) and addExceptionHandler(...).
  • Direct RenderProcessor calls must run initInvoker(invoker) first, then render with invoke(invoker, finalResult).
  • Custom AsyncInvocationWorker implementations must use finish(boolean) for completion and redispatch. See asynchronous requests.