9.1. Release Hasor v4.x

Hasor v4.1.2 (2020-02-?)

Hasor v4.1.1 (2020-02-22)

  • 新增
    • 新增 DataQL Maven 插件,会根据 *.ql 文件生成对应的 Java 调用代码。

    • 添加 TypeSupplier 接口可以让 Hasor 有能力工作在其它 IoC 框架下。一个典型的场景就是与 Spring 整合。

    • DataQL:Finder 接口取消 Object findBean(String beanName) 方法

  • 优化

    • UdfSourceAssembly 接口优化实现,getSupplier 改为返回自己。

    • UdfSourceAssembly 接口中:Object、UdfSource、UdfSourceAssembly 三个类型的方法不被默认列入。

    • bindSpiChainProcessor 方法更名为 bindSpiInterceptor 更为贴切其含义。

    • VarSupplier 接口删除使用 Supplier 替代。

    • SqlQueryFragment 当遇到返回数据仅一行时,将不在包裹 List 。

    • CollectionUdfSource evalJoinKey 方法兼容 NULL 值。

    • NumberDOP 在做二元计算时,兼顾了 POSITIVE_INFINITY、NaN、NEGATIVE_INFINITY 三种情况。

    • DO 指令增加了 除法修正 的前置处理

  • 修复

    • all-in-one 包的传递依赖丢失问题修复。
  • 其它

    • land 项目并入 rsf。

    • 内置ASM 升级到 7.3.1

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 包。

Hasor v4.0.6 (2019-05-31)

  • 改进
    • getInstance、getProvider 新增 param 参数以支持构造方法入参。

    • tConsole 接口调整。

Hasor v4.0.5 (2019-05-27)

  • 重要
    • 4.0.0版本新增的 Hasor-Boot 项目不在单独存在,理由 Hasor 可以很好的在 Spring Boot 上运行和部署,因此并无任何必要在重复构建相同功能。

    • Boot 的机制融入到AppContext 接口的两个 join、joinSignal 新增方法中,不在单独设立 Hasor Boot 启动器。

    • 删除 @IgnoreParam 注解,@ParameterForm 注解更名为 @ParameterGroup。

  • 新增

    • 新增 @Destroy 注解 @PreDestroy 注解支持,可以配置当容器停止时调用的方法。

    • binder 可以声明 Destroy 方法了,要想使用 Destroy 的Bean 必须是单例的。

    • Web请求中 ServletContext 可以作为特殊类型注入进来了。

    • AppContext 新增 join、joinSignal 两个方法。

  • 改进

    • 标记了 @ParameterForm 的参数对象会执行 inject。

    • ApiBinder 的 installModule 支持数组入参了。

    • Hasor 类的工具方法拆分到 HasorUtils 中。

    • Hasor.assertIsNotNull 方法使用 Objects 相关的方法进行替代。

Hasor v4.0.4 (2019-05-22)

  • 新增
    • Environment 接口新增 getVariableNames、getVariable 两个方法方便获取环境变量。
  • 改进

    • Environment 接口的 removeEnvVar 方法更名为 removeVariable

    • Environment 接口的 addEnvVar 方法更名为 addVariable

  • 修复

    • 修复了 WebApiBinder 接口 loadRender 方法

    • 修复 RenderWebPlugin NPE 的问题。

Hasor v4.0.3 (2019-05-17)

  • 修复
    • 删除默认配置文件中 net.hasor.web.valid.ValidWebPlugin,插件的配置,该插件已经不存在但是遗留了一个配置导致启动报错。

Hasor v4.0.2 (2019-05-17)

  • 修复
    • fix 当@ParameterForm、@HeaderParameter 和其它注解组合使用时候,发现参数丢失问题。
  • 改进

    • 优化验证框架。

    • 删除了 WebPlugin 机制。

Hasor v4.0.1 (2019-05-12)

  • Web
    • BeanContainer 增加当配置新 Bean 发生异常时自动回滚新 Bean 的能力

    • @Render 注解功能从描述URL请求尾缀,变为描述渲染器名字,同时可以执行这个渲染器使用的特殊MimeType。

    • InMapping 接口删除

    • Invoker 接口新增 ownerMapping、fillForm 方法。

    • 对应TestCase 调整。

  • Boot

    • Boot Maven插件项目不在单独设立,而是只保留一个启动器,使用时建议用户结合 SpringBoot使用更加方便。

Hasor v4.0.0 (2019-05-09)

  • **JDK8相关 **
    • 依赖JDK版本从 jdk6 升级到 jdk8,代码层面全面迁移到 jdk8 语法并深入结合 jdk8 相关特性。

    • net.hasor.core.Matcher 接口暂时保留,但已经不在使用,已替换成 java8 提供的 java.util.function.Predicate 接口替代。

    • net.hasor.core.Provider 接口暂时保留,但已经不在使用,已替换成 java8 提供的 java.util.function.Supplier 接口替代。

    • @Aop、@MappingTo、注解迎合JDK8特性可以同时标注多个。

  • 新成员

    • 新增:hasor-boot 项目和配套的 hasor-boot mavenplugin。

    • 新增:tConsole 框架,提供一个 Telnet 环境支持,给予没有界面类的应用一个可以通过命令行进行交互的工具。

  • static-config.xml 和 env.config

    • 当使用 maven-shade-plugin 进行 maven 打包时由于 static-config.xml 无法通过文件追加的方式进行简单合并。

    • 因此老版本 Hasor 的工程无法使用 maven-shade-plugin 打包。

    • 3.3.0 版本之后修改了 static-config.xml 发现机制,改为通过 /META-INF/hasor.schemas 配置文件进行发现。

    • 改进之后,使用 maven-shade-plugin 的 hasor 工程可以像处理 spring.schemas 一样处理 hasor.schemas 合并。

    • 取消 env.config 属性文件机制。

  • ApiBinder

    • ApiBinder 接口支持 inject 一个 Class 类型。

    • ApiBinder 接口中新增 asEagerSingletonClear 方法,可以用来抹除 Bean 身上配置的 @Prototype 或者 @Singleton 行为。

    • 新增 MetaInfo 接口,AppContext、BindInfo 两个接口均继承自这个接口。从而提供除了 Context 之外的第二种途径绑定环境参数。

    • 增加一组 bindToCreater 方法用户绑定 BeanCreaterListener 到 BindInfo 上,BeanCreaterListener的作用是当创建 Bean 的时候会调用这个监听器。

  • Settings

    • @InjectSettings @Inject 注解支持标注在参数上了。

    • Settings 接口增添 removeSetting 方法,可以将整个配置项的多个值全部删除。

    • 使用 Hasor 设置 mainSettings 配置文件时可以指定 Reader 类型了。

    • Hasor 类增加支持设置 setMainSettings 为 Reader 或 InputStream

    • Hasor 类增加 addSettings 用来代码方式增添配置文件。

    • 配置项 “hasor.modules.loadErrorShow” 改名为 “hasor.modules.throwLoadError”

  • EventContext

    • EventContext 接口增加异步任务方法,从现在开始可以使用异步任务了。

    • EventContext 接口 fireSyncEventWithEspecial 更名为 fireSyncEventWithAlone

    • EventContext 接口 新增 clearListener 清空监听器能力。

  • Environment

    • StandardEnvironment 增添若干构造方法,AbstractEnvironment 调整输出日志内容。

    • Environment.addEnvVar 方法在添加 环境变量时如果 Value 为空或者空字符串,其行为相当于删除。

    • Environment 接口上的一些常量定义删除(例如:WORK_HOME)

  • Web

    • MappingSetup 接口,更名为 MappingDiscoverer,MappingData更名为Mapping

    • web RuntimeListener 新增:hasor-root-module、hasor-hconfig-name、hasor-env-properties 三个 web.xml 的属性配置。

    • @HttpMethod 注解可以加到 Method 上了。

    • WebApiBinder 接口中 scanAnnoRender 方法改为 loadRender。

    • InvokerFilter、InvokerChain 拥有返回值了。

  • RSF

    • 进行重构。

    • 使用 RSF_DATA_HOME 环境变量替代 RsfEnvironment.WORK_HOME。

    • rsf的内置 hessian 序列化和反序列化配置文件,路径改到 ‘META-INF/hasor-framework/rsf-hessian/’ 下面。以避免和 hessian jar包冲突。

    • rsf Gateway 从 rsf 基础框架中删除后面会独立成一个框架。

    • rsf 地址本保存时候不在保存空数据。

  • JDBC

    • fix 执行查询结果返回为空时,AbstractRowMapper.convertValueToRequiredType 方法报 NPE 的 Bug。

    • fix JdbcTemplate 类中 requiredSingleResult 当执行结果为空时报空指针的异常。

  • Bean容器

    • BeanBuilder 接口的三个 getInstance 方法改为 getProvider 方法。

    • 新增 @ConstructorBy 注解,可以在多个构造方法中指定一个作为创建 Bean 的入口。

    • fix 包扫描 AopIgnore 注解时,如果包里面没有任何类不加载 package-info.class 的问题。

    • AopIgnore 注解新增 ignore 属性,可以用于关闭注解功能(一般用不到)。

    • fix 了 Aop 的类不支持 double, long 两种基础类型参数的问题。

    • 字节码工具 ASM 升级到 7.0 版本

    • 新增 BeanCreaterListener 接口,该接口可以用来监听 Bean 的创建。通过 ApiBinder 中 whenCreate 相关方法来配置这个接口。

  • 改进和优化

    • Hasor 类新增一组 asxxxSingleton 方法,用来设定 AppContext 的单例范围(静态、线程、ClassLoader)

    • asSmaller 时会设置 HASOR_LOAD_EXTERNALBINDER 、HASOR_LOAD_MODULE 为false,调用 asSmaller 之后不会加载任何 module 和 binder 扩展。同时任何位置的 mime.types.xml 也都不会加载

    • FutureCallback 的 cancelled 方法沉降到 CancellFutureCallback 接口中。

    • Class.forName 用法改进,普遍增加 ClassLoader 参数传入。

    • BeanUtils 类的 canWriteField,修复了对 Field 为 final 的判断。

    • 新增:utils resource loader 相关工具,来源为老版本 hasor 中的工具。

    • plugin 项目新增多种 freemarker 的 loader。

    • 增加单元测试,提升代码测试覆盖率。