影响范围
- Core 注解 AOP 与日志、Config 自动配置、Web 响应渲染与资源托管、Boot 启动与健康检查。
更新内容
- 新增
- 统一应用启动:新增
hasor-boot 模块,通过 Boot.run(args, sources) 启动普通应用或 Web 应用;支持配置文件和属性覆盖,通过 BootExtension SPI 扩展运行环境。
- 默认响应渲染:Action 返回对象默认输出 JSON,返回字符串默认输出文本,无需逐个声明渲染注解;可配置默认引擎,或使用
none 保留手动响应处理。
- JSON 引擎选择:按 Jackson、Gson、Fastjson、Fastjson2 的顺序检测运行时依赖;支持传入自定义
ObjectMapper、Gson 或 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 解析。
升级说明
- 自动配置入口:将
AutoConfigurationModule、WebAutoConfigurationModule 及旧 net.hasor.config.core.ConfigurationModule 的引用调整为 net.hasor.config.ConfigurationModule;显式配置类使用 ConfigurationModule.of(...)。扫描范围统一为 hasor.loadPackages,原 hasor.config 下的 autoScan、scanPackages 及 Web 对应配置不再使用。
- 默认渲染行为:未声明渲染方式的 Action 返回值现在会自动输出。使用
hasor.render.defaults.objectEngine、stringEngine 覆盖默认值;需要关闭相应自动输出时设为 none。默认 JSON 引擎需要至少一种受支持的 JSON 库,也可注册自定义引擎。
- 资源注册迁移:旧
ResourceFilter、ResourceHandlerRegistry 和 ResourceHandlerRegistration 改为 addResource(...);WebMvcConfigurer.addResourceHandlers 的参数改为 WebApiBinder。原来依靠 Hasor 业务过滤器保护的资源,需要重新安排访问控制,不能假定这些过滤器仍会执行。
- 包名调整:
ForwardTo、RedirectTo 从 net.hasor.web.objects 移至 net.hasor.web.render,JsonRenderEngine 移至其 json 子包;CORS 相关类统一位于 net.hasor.config.web.cors,JsonRenderConfigurer 位于 net.hasor.config.web.render。删除旧 RenderWebPlugin 的显式装配;显式引用 AOP 实现类时改用 net.hasor.core.aop。
- 内嵌服务配置:原
hasor.http.host/port 改为 hasor.boot.web.connectors.http.host/port,hasor.http.contextPath 改为 hasor.boot.web.server.contextPath。主机和端口环境变量保持不变,上下文路径环境变量改为 HASOR_WEB_CONTEXT_PATH。
- 容器依赖:不再通过
hasor.http.server 或 HASOR_HTTP_SERVER 选择容器;Web 应用只保留一个 WebServerProvider 实现,缺失或存在多个实现时启动报错。
- 健康检查端点:按需设置
hasor.boot.web.health.enabled 和 hasor.boot.web.health.path;部署时确认该端点的对外暴露范围。检查名称取自 Bean 绑定名称,无名称时使用绑定 ID。
相关阅读