Appearance
1.0.0 (2023-03-23)
这是 crane4j 的第一个正式版本,如果遇到问题可以在群内或 issues 中反馈,作者会尽快响应。
具体内容参见:Milestone。
Feature
- 提供基于 Guava 的 LoadingCache 的缓存支持
- 添加默认的组合注解扩展包;
- 支持使用Spring的@Order注解对装配操作排序;
- 支持在注解中通过 beanName 引用 Spring 上下文中的组件;
- 添加扩展模块,支持基于 MybatisPlus 自动生成表查询数据源;
Refactor
- 重构装配处理器,并统一为所有装配操作提供一对一、一对多、多对多映射支持;
- 重构并完善缓存功能;
- 添加容器工厂组件以隔离和丰富获取数据源容器的渠道;
- 将注解分离至独立的 crane4j-annotation 模块;
Test
docs
chore
1.1.0 (2023-03-30)
这一个重构与增强版本,增强了一些新功能,并且调整了一部分 api 的使用方式。
具体内容参见:Milestone。
Feature
- core模块应该默认支持ognl表达式;
- 简化
@Mapping
配置,可以在一个属性同时配置src和ref; - 字段映射支持以链式操作符获取或设置多级嵌套对象的属性;
- 提供基于 Guava 的 LoadingCache 的缓存支持;
- 支持通过
@ContainerConstant
注解的配置,反转基于常量类构建的容器键值
Refactor
docs
- 文档重构;
1.2.0 (2023-04-09)
这一个重构版本,增强了一些新功能,并且调整了 MybatisPlus 扩展的引入方式,如果已经使用了 MybatisPlus 插件,则需要按文档重新引入。
具体内容参见:Milestone。
Feature
- 支持直接填充 Map 类型的数据;
- 提供
@AssembleMp
注解,为基于 MP 的数据源提供更好的支持; - 允许自定义注解,支持解析自定义的配置规则;
- MpBaseMapperContainerRegister支持懒加载;
Refactor
Fix
1.3.0-ALPHA (2023-05-10)
这是 1.3.0
的预览版本,重构和增强了一些已有功能,并添加了一些新的功能。
其中,基于新特性添加基于接口代理的填充方法,crane4j 将更好的支持处理 JSONObject
或 Map
类型的非 JavaBean
对象。
具体内容参见:Milestone。
Feature
- 提供
@AssembleEnum
注解,对枚举类型数据源提供更好的支持; - 提供一个不基于 ThreadLocal 的动态数据源容器提供者;
- 代理填充方法支持设置临时容器;
- OperatorProxyFactory中代理方法的生成也应当支持多种策略;
- 支持通过 Spring 依赖注入获取被
@Operator
注解的接口的代理对象; - 装配操作中的容器支持懒加载;
- 添加基于接口代理的填充方法;
- 提供一个默认的可配置容器注册者实现;
Refactor
Test
- 提高测试覆盖率;
- MybatisPlus相关扩展的测试用例数据库更换为H2;
- 修复了引入
crane4j-spring-boot-starter
时的一些自动装配问题;
Doc
2.0.0-ALPHA (2023-07-08)
这是 2.0.0
的预览版本,基于 1.3.0-ALPHA
升级而来。
项目进行了一次范围较大的重构,优化了大量的代码与逻辑,部分 API 可能不向下兼容。
具体内容参见:Milestone。
Feature
- 优化
@ContainerMethod
注解在类上的配置方式; - 添加一个全局的排序器静态单例,用于同时支持 Spring 的
@Order
与 Crane4j 的Sorted
接口; ConstantContainer
支持刷新缓存内容;- 代理填充方法支持设置临时容器;
- 提供一个默认的可配置容器注册者实现;
Refactor
- 2.0 升级重构计划;
- 重构容器与装配操作配置的绑定过程;
- 重构全局配置类的容器管理功能;
- 装配操作可以指定数据源容器的加载策略;
- 配置解析器应当支持所有的AnnotatedElement类型对象的注解配置;
- 移除了
AbstractCacheablePropertyOperator
,缓存功能分离至独立的CacheablePropertyOperator
装饰器;
Doc
2.0.0-BATE (2023-07-30)
这是 2.0.0
的第二个预览版本,在上一个版本的基础上修复了一些 bug,并添加了一些新功能。
具体内容参见:Milestone。
Fix
- 为基于
ConstantContainer
的枚举、常量容器提供独立的Builder
; - 启用全局切面后,springboot 项目启动报错;
- 在方法添加
@AutoOperate
后,若方法不指定填充对象类型,且返回值为空时报错;
Refactor
Feature
- 当在注解中不指定 key 属性时,允许将当前对象作为 key 值;
ReflectivePropertyOperator
在没有找到 setter 或者 getter 方法时,应当支持直接基于属性进行读写;
2.0.0 (2023-08-06)
这是 2.0.0
的正式版本,相对最近的一个正式版本 1.2.0
做了大幅度的重构,优化了很多旧功能,并且添加了较多新特性。
具体内容参见:Milestone。
Feature
- 优化
@ContainerMethod
注解在类上的配置方式; - 添加一个全局的排序器静态单例,用于同时支持 Spring 的
@Order
与 Crane4j 的Sorted
接口; ConstantContainer
支持刷新缓存内容;- 代理填充方法支持设置临时容器;
- 提供一个默认的可配置容器注册者实现;
- 当在注解中不指定 key 属性时,允许将当前对象作为 key 值;
ReflectivePropertyOperator
在没有找到 setter 或者 getter 方法时,应当支持直接基于属性进行读写;- 支持“字典类型-字典项编码”模式的字典项填充;
Refactor
- 2.0 升级重构计划;
- 重构容器与装配操作配置的绑定过程;
- 重构全局配置类的容器管理功能;
- 装配操作可以指定数据源容器的加载策略;
- 配置解析器应当支持所有的AnnotatedElement类型对象的注解配置;
- 移除了
AbstractCacheablePropertyOperator
,缓存功能分离至独立的CacheablePropertyOperator
装饰器; - 在各个组件中由于参数/逻辑校验不通过而抛出异常时,异常需要更详细的信息;
- 一些关键操作通过 debug 级别的日志输出执行时间;
Fix
- 为基于
ConstantContainer
的枚举、常量容器提供独立的Builder
; - 启用全局切面后,springboot 项目启动报错;
- 在方法添加
@AutoOperate
后,若方法不指定填充对象类型,且返回值为空时报错; - spring环境下,
ContainerProvider
没有在启动后自动注册到Crane4jApplicationContext
中;
Doc
2.1.0 (2023-08-21)
这是一个正常迭代版本,相对上一个版本,修复了一些问题,并调整了关于枚举和常量扫描相关的功能。
具体内容参见:Milestone。
Feature
Fix
Crane4jInitializer
启动顺序太靠后,导致在项目中ApplicationRunner
启动时容器仍然未加载;@AssembleEnum
在不指定enumKey
或者enumValue
时会空指针;- 在启动类添加
@EnableCrane4j
注解后,启动应用报错 “No ServletContext set”;
Refactor
Doc
2.2.0 (2023-09-25)
这是一个正常迭代版本,主要修复了一些问题,并添加了少量新功能。
具体内容参见:Milestone。
Feature
- 为
PropertyOperator
提供基于方法句柄MethodHandler
的实现; - 支持
@AssembleMethod
注解,用于快速声明一个基于方法容器的装配操作; - 添加 jackson 插件,在序列化和反序列化过程中填充 json 数据;
- 枚举容器和方法容器支持设置重复的 key 值;
Fix
- 并发环境下获取容器可能导致类转换异常 “cn.crane4j.core.container.MethodInvokerContainer cannot be cast to cn.crane4j.core.container.ContainerDefinition”;
@Assemble
注解应当支持在类上声明,且支持重复声明;- AsyncBeanOperationExecutor 避免重复请求相同的数据源;
- 在不同类的同名方法上添加
@AutoOperate
后,会导致填充字段错乱; - 升级2.1.0版本后,警告“Unable to find property mapping strategy [], use default strategy [OverwriteNotNullMappingStrategy]”;
Refactor
- 添加容器适配器管理器,并重构
DynamicContainerOperatorProxyMethodFactory
中适配器部分代码; - 优化
PropertyMappingStrategy
的管理方式;
2.3.0 (2023-10-18)
这是一个正常迭代版本,主要修复了一些问题,并添加了少量新功能。
具体内容参见:Milestone。
Feature
- 支持直接通过
Crane4jGlobalConfiguration
获取OperateTemplate
; - 支持全量获取数量固定的数据源容器;
- 当目标对象的key值与数据源对象的key值类型不一致时,可以指定将目标对象的key值转为对应类型;
Fix
Refactor
Doc
2.3.1 (2023-12-10)
这是一个 Bug 修复版本,请尽快升级。
Fix
2.4.0 (2024-01-15)
这是一个功能迭代版本,重构并大幅度增强了缓存功能,并修复了一些问题。
具体内容参见:Milestone。
Feature
- Operator 接口支持基于
@AutoOperate
注解的自动填充; - 支持 redis 缓存;
@AssembleEnum
直接直接内嵌一个@ContainerEnum
注解用于配置;- 将启用框架的方式从注解改为 SPI;
- 方法缓存希望可以像 Spring 那样,通过注解配置到期时间和刷新;
- 基于
@ContainerMethod
的方法容器,希望返回值可以支持String
或基础数据类型及其包装类; - 声明装配操作时是否可以根据条件判断是否应用此次操作?;
2.5.0 (2024-02-01)
这是一个功能迭代版本,修复了 crane4j 与 SpringBoot 集成的一些问题,完善了文档与代码注释,并优化了一些功能的使用方式。
具体内容参见:Milestone。
Feature
- 异步执行器支持指定支持指定批量大小,将基于同一数据源的操作分为多个小任务;
- 提供回调接口或组件,用于在具体的填充过程支持一些自定的操作;
- 当需要值到键的映射时,希望可以不需要在注解中指定 props 属性;
- 验证或者支持在更高的 LTS 版本运行;
- 支持直接在 @ContainerMethod 注解中指定缓存配置;
Refactor
Fix
- 与 SpringBoot 项目集成后,启动出现 No ServletContext set 异常;
- 声明装的配操作支持在实际执行时,根据情况动态决定是否应用;
- 当 Bean 被代理后,类上的
@ContainerCache
注解无法被识别;
2.6.0 (2024-02-23)
这是一个新特性版本,添加了对条件操作的支持,并额外支持了常量和键值两种数据源容器的选项式配置。
具体内容参见:Milestone。
Feature
- 支持
@AssembleConstant
注解,用于快速声明一个基于常量类的装配操作; - 支持使用实体类中特定方法返回值作为key值;
@ContainerCache
注解支持在 Spring 配置类的工厂方法中使用;- 声明装的配操作支持在实际执行时,根据情况动态决定是否应用;
@Assemble
注解支持通过类似 Spring 的@Condition
的方式动态决定是否要对特定对象应用操作;- 支持为每个操作都添加一个id作为唯一标识;
- 支持根据策略回填指定字段值;
Refactor
Fix
2.6.1 (2024-03-13)
这是一个 Bug 修复版本,请尽快升级。
Fix
2.6.2 (2024-03-27)
这是一个 Bug 修复版本,请尽快升级。
Fix
2.7.0 (2024-04-08)
这是一个新特性版本,修复了一些问题,重构了一些底层组件,提高了字段映射的执行性能,并添加了键值解析器、字段映射的字面量配置的新特性。
具体内容参见:Milestone。
Feature
- 在 Spring 环境默认启用 AsyncBeanOperationExecutor 执行器;
- 简化属性映射配置,支持通过字面量的形式配置;
- 将从目标对象中提取 key 值的操作分离为独立的键值提取器;
- 数据源容器支持接受对象类型参数;
- 支持在被
@AutoOperate
注解的方法上添加操作配置;
Refactor
Fix
Doc
2.8.0 (2024-05-07)
这是一个新特性版本,修复了一些问题,优化了一些功能。
具体内容参见:Milestone。
Feature
- 提供一个操作门面,用于整合组件管理、容器注册、操作执行以及配置管理等功能;
- 当项目中同上存在复数同名的数据源容器时,应当直接报错或输出警告日志;
- @ContainerMethod 支持像 @AutoOperate 那样提取包装对象中的实际数据;
- 支持在非 Spring 环境下使用自动填充;
- 提供一个基于 SoftConcurrentMap 实现的缓存管理器;
- 代理工厂支持基于 ByteBuddy 代理非接口类型;
Fix
@ContainerEnumScan
注解无法支持带有通配符的路径;- 添加
@OperatorScan
注解后,项目启动时出现 'No servlet set' 问题; - 创建容器时可以指定 namespace 为空字符串,但是引用时却无法引用;
- 自动填充方法参数时,
AutoOperate.resolveOperationsFromCurrentElement
配置不生效;
Refactor
2.8.1 (2024-06-05)
这是一个 Bug 修复版本,请尽快升级。
Fix
2.8.2 (2024-06-16)
这是一个 Bug 修复版本,请尽快升级。
Fix
2.9.0 (2024-06-30)
这是一个新特性版本,修复了一些已知问题,添加了一些新功能。
具体内容参见:Milestone。
Feature
- Crane4jTemplate 需要提供一个用于直接添加/刷新容器缓存数据的 API;
- 拆卸操作支持非平铺模式;
- 多对多装配时,若被 ref 指向的字段是字符串,则自动按指定的分隔符拼接为字符串;
- 提供
@AssembleDB
注解,支持基于自定义 SQL 的数据源容器;
Fix
- 使用 @ContainerCache 添加缓存后,即使缓存全部命中依然会调用查询方法;
- 使用 Guava 缓存时,即使命中了缓存但是依然会查 DB,且 ID 都变成了NULL;
- 在依赖中排除 Ognl 后,SpringBoot 项目启动报错;
- 当通过
@AutoOperate#on
从返回值中提取待填充数据时,会偶发空指针异常;
Refactor