基于 Java 应用开发框架,无论是应用类程序还是框架类工具。Hasor都会是一个强有力的基石。
本次更新主要带来的方面是
- 稳定性提升,core\web\db\dataql\tconsole 这些组件的单测覆盖率大幅提升,并且这次更新还发布了 覆盖率报告
- hasor-core 开始全面兼容 jsr332 向标准靠齐
- 另外这次新增了 tConsole 和 DataQL 两个子框架。
- 最后新增了 all-in-one 包,只需要依赖一个 jar 包。就可以实现 hasor 全系引入。
下面是本次更新的详细
Hasor v4.1.0 (2020-02-03)
------------------------------------
Commons
- 修复 ResourcesUtils 和 ScanClassPath,IO 文件句柄泄露问题。
- BasicFuture 的 callback,当没有实现CancellFutureCallback的时候时候,会触发failed。
- DataQL 中的 InterBeanMap 更名为 BeanMap 移到 commons 中。
- DB 中的 LinkedCaseInsensitiveMap 移到 commons 中。
Core
- 改造 hasor.core 全面支持 JSR-330。
- 全新的 SPI 能力。
- 单测覆盖率达到 90%,修复若干潜在的问题。
- 主 namespace ‘http://project.hasor.net/hasor/schema/main’ 统一改为 ‘http://www.hasor.net/sechma/main’
- @InjectSettings 注解增加,命名空间支持。
- 默认配置文件名 hasor-config.xml 改为 hconfig.xml、不在提供环境参数属性文件的机制。
- 其它大量接口上和内部执行机制的优化
Web
- 单测覆盖率达到 90%,修复若干潜在的问题。
- hasor-env-properties 参数不在有效。
- @Produces 注解行为变化为不在影响使用哪个渲染器,而是负责指明使用什么类型作为 response 的 ContentType。
- j2ee Servlet 会被转换成 MappingTo 运行。j2ee Filter 会被转换成 InvokerFilter 运行。
- 新增 OneConfig 汇总了FilterConfig, ServletConfig, InvokerConfig 三个接口的实现。
- ListenerPipeline 不在需要,取而代之使用 SPI 机制来替代。
- RenderInvoker 接口不在提供 lockViewType 相关方法。
- MimeType 接口在获取 mimeType 信息时改为优先框架内的数据,如果框架内数据招不到在到 context 上查找。
DB
- mybatis 插件回归 hasor-db
tConsole
- 重构,对于多行输入支持用户自定义命令结符号or字符串。重构后单测覆盖率达到 90%。
- 支持 server 模式通过 Socket 端口运行
- 支持 基于标准输入输出流运行
- hasor-boot 能力被完完全全整合,因此 Hasor 将不在提供 hasor-boot。
DataQL
- 重构,放弃 javacc 更换成 antlr4。antlr4 更加智能。AST 模型仍然不变。重构后单测覆盖率达到 90%。
- DataQL 大量新语法新特性。具体参看语法参考手册。一些老的语法形式也不在支持,因此 DataQL 的语法和以前有明显变化。
- 运行时内存模型:确定为 两栈一堆
- 指令集系统:不在需要 ASM、ASA、ASO 三个指令,取而代之的是更严谨的指令集。
- SDK:函数包能力
- DataModel数据模型:增加 unwrap 方法,用来解开 DataModel 包裹
- 新增 Fragment 机制允许 DataQL 执行外部非 DataQL 语法的代码片段。
- BeanContainer 改为 Finder,删掉 UdfSource、UdfManager、UdfResult 不在需要这些概念。
- 原有 dql test case 语句文件统一转移到 _old 目录下面备用。
RSF
- rsf 使用 tconsole 的新接口
- 注册中心暂不可用,下几个版本会重新设计。
- rsf 的 InterAddress 支持域名传入,但是toString 的时仍然会转换为 ip。
其它
- 删除 Hasor 默认提供的 JFinal 插件支持。理由是 JFinal 功能和 Hasor 体系重叠,同时 Hasor 的所有功能都是独立。
- 整合 Hasor 及其容易因此没有提供集成代码的必要。
- 新增 Hasor-all 包。