跳到主要内容

v5.2.0 (2026-09-12)

影响范围

  • Core 注解 AOP 与日志、Config 自动配置、Web 响应渲染与资源托管、Boot 启动与健康检查。

更新内容

  • 新增
    • 统一应用启动:新增 hasor-boot 模块,通过 Boot.run(args, sources) 启动普通应用或 Web 应用;支持配置文件和属性覆盖,通过 BootExtension SPI 扩展运行环境。
    • 默认响应渲染:Action 返回对象默认输出 JSON,返回字符串默认输出文本,无需逐个声明渲染注解;可配置默认引擎,或使用 none 保留手动响应处理。
    • JSON 引擎选择:按 Jackson、Gson、Fastjson、Fastjson2 的顺序检测运行时依赖;支持传入自定义 ObjectMapperGson 或 Fastjson 系列的序列化配置。
    • 资源注册接口:通过 WebApiBinder.addResource(path, loaders...) 为同一路径组合多个资源来源;使用 ResourceBinder 配置欢迎文件、路由回退、缓存策略、排除路径及匹配顺序。
    • 健康检查:Boot Web 默认提供 /health,支持修改路径、关闭端点及通过 @Bean 或绑定接口注册 HealthCheck;全部正常返回 UP / 200,任一检查失败或抛出异常返回 DOWN / 503,不向客户端输出异常详情。
    • 重定向状态码:@RedirectTo 支持 301、302、303、307、308,默认仍为 302,可直接使用 @RedirectTo(301)
  • 优化
    • 注解 AOP 内置:@Aop 由 Core 默认装配,不再依赖 Config 模块。
    • 扫描统一管理:ConfigurationModule 使用 Core 的扫描范围,一次扫描后分别处理配置类和 Web 映射;支持 auto() 自动扫描及 of(...) 显式加载配置类。
    • 路由装配检查:自动扫描复用已注册类型,检测冲突路由;仅路径参数名称不同的路由也视为冲突。
    • 渲染流程内置:返回值渲染整合到请求执行链,不再通过插件和业务过滤器装配;编码沿用 Web 配置或当前请求,保留 Action 对单次响应的覆盖能力。
    • 资源独立处理:Action 优先匹配,未匹配时处理静态资源;资源请求不进入 Hasor 业务过滤链和返回值渲染,支持 HEAD 与 Last-Modified 条件请求。
    • 启动生命周期:Web 通过扩展接入统一 Boot 入口,协调应用容器、内嵌服务、启动失败清理及关闭钩子;Tomcat、Jetty、Undertow 使用统一配置,支持关闭 HTTP 监听但保留 Web 上下文。
    • 框架日志统一:Core 与 Web 的相关日志改用 Cobble 日志接口,不要求业务代码更换日志 API。
    • 文档更新:补齐中英文使用文档和历史版本说明,统一导航、标题及示例版本变量。
  • 修复
    • 避免对已手动接管、异步处理、已提交以及 204、304 响应重复追加渲染内容。
    • 修复可执行包加载早期日志依赖尚未就绪时的处理,避免日志输出干扰启动。
    • 修复嵌套 JAR 缺少显式目录条目时的目录资源 URL 解析。

升级说明

  • 自动配置入口:将 AutoConfigurationModuleWebAutoConfigurationModule 及旧 net.hasor.config.core.ConfigurationModule 的引用调整为 net.hasor.config.ConfigurationModule;显式配置类使用 ConfigurationModule.of(...)。扫描范围统一为 hasor.loadPackages,原 hasor.config 下的 autoScanscanPackages 及 Web 对应配置不再使用。
  • 默认渲染行为:未声明渲染方式的 Action 返回值现在会自动输出。使用 hasor.render.defaults.objectEnginestringEngine 覆盖默认值;需要关闭相应自动输出时设为 none。默认 JSON 引擎需要至少一种受支持的 JSON 库,也可注册自定义引擎。
  • 资源注册迁移:旧 ResourceFilterResourceHandlerRegistryResourceHandlerRegistration 改为 addResource(...)WebMvcConfigurer.addResourceHandlers 的参数改为 WebApiBinder。原来依靠 Hasor 业务过滤器保护的资源,需要重新安排访问控制,不能假定这些过滤器仍会执行。
  • 包名调整:ForwardToRedirectTonet.hasor.web.objects 移至 net.hasor.web.renderJsonRenderEngine 移至其 json 子包;CORS 相关类统一位于 net.hasor.config.web.corsJsonRenderConfigurer 位于 net.hasor.config.web.render。删除旧 RenderWebPlugin 的显式装配;显式引用 AOP 实现类时改用 net.hasor.core.aop
  • 内嵌服务配置:原 hasor.http.host/port 改为 hasor.boot.web.connectors.http.host/porthasor.http.contextPath 改为 hasor.boot.web.server.contextPath。主机和端口环境变量保持不变,上下文路径环境变量改为 HASOR_WEB_CONTEXT_PATH
  • 容器依赖:不再通过 hasor.http.serverHASOR_HTTP_SERVER 选择容器;Web 应用只保留一个 WebServerProvider 实现,缺失或存在多个实现时启动报错。
  • 健康检查端点:按需设置 hasor.boot.web.health.enabledhasor.boot.web.health.path;部署时确认该端点的对外暴露范围。检查名称取自 Bean 绑定名称,无名称时使用绑定 ID。

相关阅读