Appearance
配置文件
在 Spring 环境中,你可以基于配置文件对 crane4j 的一些可选项进行配置。
1.反射
1.1.是否启用字节码反射
crane4j
通过默认引入了基于字节码的反射增强库 ReflectAsm ,用户可以通过 enable-asm-reflect
开启反射增强功能:
yml
crane4j:
# 启用字节码增强
enable-asm-reflect: true
默认为 false
,开启后可以一定程度上提升字段映射的性能,不过对应的可能会带来额外的内存消耗。
WARNING
由于兼容性问题,该配置只在 java8 的版本有效。
1.2.是否支持处理Map对象
是否支持对 Map
对象进行属性映射,默认为 true
:
yml
crane4j:
enable-map-operate: true
如果你的项目里面没有通过 crane4j
直接处理 Map
或者JSONObject
的需求,可以关闭它。
1.3.是否支持链式操作符
是否支持 xx.xx.xx
这样的链式操作符,默认为 true
:
yml
crane4j:
enable-chain-operate: true
2.容器
2.1.扫描常量容器
crane4j
支持将常量类也作为数据源适配为容器,因此提供了 container-enum-packages
配置,用于扫描一个或多个包路径下的枚举,在应用启动后自动注册为容器:
yml
crane4j:
# 扫描常量包路径
container-constant-packages: cn.demo.constant.*
关于容器部分,参见常量容器一节。
2.2.扫描枚举容器
crane4j
支持将枚举也作为数据源适配为容器,因此提供了 container-enum-packages
配置,用于扫描一个或多个包路径下的枚举,在应用启动后自动注册为容器:
yml
crane4j:
# 扫描枚举包路径
container-enum-packages: cn.demo.constant.enums.*
# 是否只加载被@ContainerEnum注解的枚举
only-load-annotated-enum: true
关于容器部分,参见枚举容器一节。
2.3.扫描方法容器
crane4j
支持将被 Spring 管理的 bean
中带有 @ContainerMethod
方法也适配为容器:
yaml
crane4j:
enable-method-container: true
默认为 true
。
2.4.容器缓存配置
用户可以通过 cache-containers
配置为指定的数据源容器添加缓存功能:
yml
crane4j:
# 声明哪些数据源需要包装为缓存
cache-containers:
shared-cache: testContainer
上述示例表示,在项目启动后,通过 CacheManager
为命名空间为 testContainer
的容器挂载缓存空间 shared-cache
。
3.自动填充
crane4j
默认支持自动方法返回值与方法入参,用户也可以通过配置自定义是否关闭该功能:
yml
crane4j:
# 是否启用参数自动填充
enable-method-argument-auto-operate: false
# 是否启用返回值自动填充
enable-method-result-auto-operate: false
关于自动填充,参见 触发填充操作 一节。
4.操作配置预解析
由于操作配置对象 BeanOperation
皆由对应的 Class
解析而来,因此若解析器具备缓存功能,可以通过 operate-entity-packages
配置实体类包路径,在执行器进行预解析,从而在后续调用时略过配置解析步骤,加快执行速度:
yml
crane4j:
# 操作配置预解析
operate-entity-packages: cn.crane4j.springboot.config.*
5.是否忽略 key 值为 null 的操作
在默认情况下,即使 key 值为 null,crane4j 依然认为其为有效值,并尝试通过容器获取对应的数据。
举个例子,你定义了一个根据 id 查询用户信息并填充数据的操作,但是当 id 为 null,时 crane4j 依然会拿着 null 去调用查询用户信息的方法。
在 2.5.0 即以上版本,如果你认为 null 值都是无效值,当 key 值为 null 时需要忽略这个操作,那么可以配置:
yml
crane4j:
# 当 key 值为 null 时忽略此操作
ignore-null-key-when-assembling: true
该值默认为 true。