Releases: buession/buessionframework
Releases · buession/buessionframework
v3.0.0
🔨依赖升级
⭐ 新特性
- ClassUtils 新增检测类是否存在方法 isPresent
- 新增 list 到 set 转换器 ListSetConverter
- 新增 set 到 list 转换器 SetListConverter
- 新增断言转换器 PredicateConverter
- 新增 集合转换器 CollectionConverter
- 新增 Map.Entry 到 Map 转换器 MapEntryMapConverter
- httpClient Configuration 新增 expectContinueEnabled、hardCancellationEnabled、targetPreferredAuthSchemes、cookieSpec、proxy 配置
- httpClient 新增代理支持
- ApacheClient 新增支持 apache httpcomponents 5,根据依赖的 apache httpcomponents 5 和 apache httpcomponents 4 自动判断,优先使用 apache httpcomponents 5
- 新增支持 Lettuce(stream 命令不稳定,不推荐使用)
- jedis 模式下,集群支持管道
- 新增代理方法调用者 ProxyMethodInvoker
- 新增代理调用处理器 InvocationHandler 抽象类 AbstractInvocationHandler
- PropertyMapper 增加正数断言 alwaysApplyingWhenPositiveNumber
- com.buession.io.file.File 新增支持将 InputStream 写入文件
- JSON 序列化和反序列化支持对原生对象进行配置
- 增加范围类 Range 及其衍生类
- 新增日期时间工具类 DateTimeUtils
🔔 变化
- Maps.toList 参数为 LinkedHashMap 时返回 LinkedList
- Lists.toSet 参数为 LinkedList 返回 LinkedHashSet
- Sets.toList 参数为 LinkedHashSet 返回 LinkedList
- core 包中删除依赖 commons-beanutils
- 删除 ArrayUtils、StatusUtils、ObjectUtils、MapUtils、BuesssionFrameworkVersion
- 删除 AbstractAspectAnnotationsMethodInterceptor
- geoip 删除依赖 apache httpcomponents
- 废弃 ApacheRequest、ApacheRequestBuilder、ApacheHttpClientBuilder
- httpClient 优化 ConnectionManager 创建默认原生 ConnectionManager,以解决在创建原生 ConnectionManager 之前,更新了 Configuration 不生效的问题
- ApacheHttpClient 删除 apache httpcomponents 4 中的特有方法
- httpClient 参数为 URL 时,不再验证是否为 null
- apache httpcomponents 异步请求时 HttpAsyncResponseConsumer 采用 ZeroCopyConsumer
- okhttp maxRequestsPerHost 大于 0 时,才会更新 okhttp 原生 maxRequestsPerHost 的值
- 删除 OkHttpClient
- 重构 JDBC 连接池和数据源
- MyBatisDao 废弃 masterTemplate、slaveSqlSessionTemplate,通过其它数据库本身或其它中间件实现读写分离
- redis 删除参数为字符串数组或 byte[] 数组的方法 bitField
- redis 废弃字符串型 / byte[]型 min、max 参数的方法
- redis role 命令直接返回 Role,不再返回 List<Role>
- redis 重构管道、事务内部实现
- redis 哨兵连接,如果指定了连接超时、读取超时,但未指定哨兵节点连接超时、读取超时,哨兵节点连接超时、读取超时也使用该值
- redis 连接池调整在连接对象中创建,不再在 DataSource 中创建
- redis 不再推荐从 DataSource 中创建 RedisConnection 实例
- IO MimeType 忽略大小写比较
- 删除 com.buession.web.mvc.Response 中参数为 com.buession.core.Pagination 的构造函数和 setter 函数
- 删除 buession-cron 和 buession-session
- 删除 MobileFilter、PoweredByHeaderFilter
- 序列化类删除反序列化方法
🐞 Bug 修复
- httpClient 修复 ConnectionManager 未设置 connectionManagerShared 时,无法从 Configuration 中获取 connectionManagerShared 值的 BUG
- 修复 okhttp 设置 followRedirects 时,followSslRedirects 未生效的 BUG
- 修复 jedis 模式下 role 命令未返回数据的 BUG
- 修复 jedis 模式下 API 中,“命令”参数设置错误的 BUG
- 修复 jedis GeoRadiusResponseConverter coordinate 为 null 时,空指针异常
- 修复 jedis 模式下连接中的错误和参数丢失等问题
- 修复 Validate IPV4 验证,第一段为 10 ~ 99 时,验证失败的 BUG
⏪ 优化
- 优化 redis 转换器,不使用静态属性,以减少内存占用
- jedis 模式命令运算优化
- 优化 JDBC 数据源连接池设置
- 优化 httpclient 配置、连接管理器以及连接客户端
- 优化默认线程池执行器 DefaultThreadPoolExecutor 初始化
- com.buession.io.file.File 读取文件优化
📔 文档
- 完善 redis 注释
- 修正 httpclient 错误注释
- 完善 httpclient 注释
v2.3.3
🔨依赖升级
⭐ 新特性
- buession-core: 新增默认线程工厂 DefaultThreadFactory
- buession-core: 新增默认线程池执行器 DefaultThreadPoolExecutor
- buession-core: File 新增创建软链接方法
- buession-core: PropertyMapper 新增 alwaysApplyingWhenNull 条件为 null 时,alwaysApplyingWhenNonText 条件为 null 或无字符串(不含空格、换行符、制表位)时
🔔 变化
- buession-core: 废弃 ThreadPoolConfiguration name 属性
- buession-core: 废弃 ThreadPoolConfiguration timeUnit 属性,使用 keepAliveTimeUnit 替代
- buession-core: 废弃 ObjectUtils 使用 java 原生 API Optional
- buession-core: 废弃 StatusUtils ,迁移至枚举 Status 本身
🐞 Bug 修复
- buession-core: 修复 StringUtils 类忽略大小写判断是否以字符开头或结尾,错误判断的 BUG
- buession-dao: 修复 MongoDBDao 处理 in、nin 条件值错误传递问题
⏪ 优化
- buession-core: 优化数据验证,减少内存占用
- buession-json: 数据脱敏,性能优化
v2.3.2
🔨依赖升级
⭐ 新特性
- buession-core: ClassUtils、MethodUtils、FieldUtils 增加检测是否含义任意注解的方法
- buession-core: AnnotationUtils 增加检测属性是否含义任意注解的方法
- buession-core: 断言 Assert 可指定异常
- buession-core: 新增对象工具类 ObjectUtils
- buession-core: AbstractBeanConverter 新增支持 String 转枚举
- buession-core: 新增反射工具类 ReflectionUtils
- buession-aop: 新增注解处理器支持解析注解属性中的变量
- buession-json: 注解 @sensitive 增加支持邮箱脱敏
- buession-httpclient: OKHTTP client 增加可设置 maxRequests
- buession-velocity: 新增验证工具 ValidateTool
- buession-web: 新增注解处理器支持解析注解属性中的变量
🔔 变化
- buession-core: 废弃 JsonSerializer 和 JsonDeserializer
- buession-core: ListConverter、SetConverter、MapConverter 默认返回原始类型
- buession-core: 移除 spring-beans 依赖
- buession-json: 注解 @sensitive 内容替换策略,替换符可通过属性 replacement 设置
🐞 Bug 修复
- buession-core: 修改错误的类名 BuesssionFrameworkVersion 为 BuessionFrameworkVersion
- buession-beans: 修复 NumberPropertyConverter 字符串转换为数字时异常的 BUG
- buession-beans: 修复 Map 转换为 bean 时字段为 null 值的 BUG
- buession-beans: 修复 Map 转换为 bean 或 bean 转换为 map 时缓存导致的异常
- buession-dao: 修复分页插件 PaginationInterceptor 当页码大于等于 2 时,无法返回数据的 BUG
- buession-dao: 修复分页对象下一页值错误的 BUG
- buession-git: 修复无法解析 git 信息时,空指针异常
- buession-web: 修复分页对象下一页值错误的 BUG
⏪ 优化
- buession-beans: 代码优化
- buession-httpclient: 代码优化
- buession-redis: 代码优化
- buession-redis: 优化 RedisAccessor 多次调用 afterPropertiesSet 时,重复初始化 RedisConnectionFactory
- buession-geoip: 优化 GeoIPResolverFactoryBean 多次调用 afterPropertiesSet 时,重复初始化 DatabaseResolver
- buession-thesaurus: 优化 ThesaurusFactoryBean 多次调用 afterPropertiesSet 时,重复初始化 Parser
- buession-velocity: 优化 VelocityEngineFactoryBean 多次调用 afterPropertiesSet 时,重复初始化 VelocityEngine
📔 文档
- buession-aop: 完善注释
- buession-httpclient: 完善注释
- buession-redis: 完善注释
- buession-velocity: 完善注释
- buession-web: 完善注释
v2.3.1
🔨依赖升级
⭐ 新特性
- buession-beans: 新增 bean 转换器 BeanConverter , 支持 map、bean 互转
- buession-core: 新增日期、时间格式化工具类 DateFormatUtils
- buession-core: DateTime 新增日期时间对象、日历对象、时钟对象转换为时间戳方法
- buession-core: 新增线程池饱和策略 ThreadPolicy
- buession-dao: 新增实验性的 MyBatis 分页插件
- buession-json: 注解 Sensitive 增加 strategyType 用于定义脱敏策略类,优先级高于 strategy
🐞 Bug 修复
- buession-core: 修复 ClassUtils instantiate 方法初始化类时,参数长度错误判断异常
- buession-core: 修复 MapBuilder 增加 putIfPresent 方法,值不为 null 时添加到 Map 中
- buession-dao: 修复修改数据 BUG
- buession-web: 修复获取客户端真实 IP 注解判断错误 BUG
- buession-web: 修复 velocity JsonTool 为设置日期时间格式时,无法设置时区的 BUG
⏪ 优化
- buession-httpclient: okhttp3 连接池关闭时驱逐连接资源
v2.3.0
🔨依赖升级
🔔 变化
- buession-core: 废弃 com.buession.core.serializer.type.TypeReference 使用 com.buession.core.type.TypeReference【3.0.0 版本删除】
- buession-core: 将序列化类,拆分成序列化和反序列化
- buession-dao: 废弃 DefaultEnumTypeHandler 使用 mybatis 原生 EnumTypeHandler【3.0.0 版本删除】
- buession-httpclient: 废弃 Request.setUrl(String url) 使用 Request.setUri(URI uri) 替代【3.0.0 版本删除】
- buession-web: AbstractRestController 添加主键类型、数据传输对象类型、数据输出对象类型
- buession-web: Response 的 Pagination 类型由 com.buession.core.Pagination 更改为 com.buession.web.mvc.Pagination 不再返回数据
- buession-redis: 废弃 bitfield 通过可变参数传参
⭐ 新特性
- buession-lang: 新增浏览器类型 BrowserType、设备类型 DeviceType、渲染引擎 RenderingEngine、版本 Version、浏览器 Browser、操作系统 OperatingSystem 定义
- buession-lang: 新增重试配置 Retry
- buession-aop: 增加 AfterReturningAdviceMethodInvocationAdapter、AfterThrowingAdviceMethodInvocationAdapter、AroundAdviceMethodInvocationAdapter
- buession-core: 新增类型引用类 com.buession.core.type.TypeReference
- buession-core: 新增配置器接口 Configurer
- buession-core: 新增定制器接口 Customizer
- buession-core: 新增线程池配置类 ThreadPoolConfiguration
- buession-core: Arrays 新增元素重复填充方法
- buession-core: StringUtils 新增截取左边指定个字符串
- buession-core: DateTime 新增如果获取原生日期、时间对象方法
- buession-dao: 删除数据时,支持指定删除条数
- buession-httpclient: 新增实验性 HTTP 异步请求客户端
- buession-httpclient: 请求方法支持传 URI
- buession-httpclient: 支持为每次请求单独配置 readTimeout
- buession-jdbc: DataSource 可设置驱动、JDBC URL、数据库用户名、数据库密码信息
- buession-jdbc: 新增 javax.sql.DataSource 初始化回调接口 Callback
- buession-redis: bitfield API 支持通过 BitFieldArgument 传参
- buession-net: SslConfiguration 增加 sslContext 属性
- buession-net: 新增 SSL 配置 SslConfigure
🐞 Bug 修复
- buession-redis: 修复 Jedis StringCommands.SetArgument 设置过期时间戳,处理成过期时间的 BUG
- buession-redis: 修复 Client 对象返回的 cmd 类型错误的 BUG
- buession-jdbc: 修复 DataSource 未设置 PoolConfiguration 创建原生 DataSource 空指针 BUG
- buession-httpclient: 修复 HttpClient request 方法,无法发送 report、proppatch 请求 BUG
- buession-httpclient: 修复 OkHttpClientConnectionManager 中错误设置 IdleConnectionTime 的 BUG
- buession-web: 修复 AbstractBasicRestController 无法调用重写 pageNotFound(final String uri) 方法 BUG
- buession-web: 修复 ServerInfoFilter 通过 setHeaderName 方法设置响应头名称无效的 BUG
- buession-web: 修复 ServerInfoFilter 通过构造函数设置响应头名称未进行有效性验证的 BUG
- buession-web: 修复 ServletContentTypeAnnotationHandler、ServletResponseHeadersAnnotationHandler 空指针 BUG
- buession-web: 修复 servlet 下 ExceptionResolver 处理异常时,响应流异常关闭的 BUG
⏪ 优化
- buession-httpclient: 内部优化
- 其它优化
v2.2.1
🔨依赖升级
- 依赖库版本升级和安全漏洞修复
- buession-geoip: 升级 IP 库
🔔 变化
- buession-web: Servlet AbstractHandlerExceptionResolver doResolve 方法支持接收 handler
⭐ 新特性
- buession-web: 新增实验性 User-Agent 解析工具
v2.2.0
2.2.0 (2023-03-10)
🔨依赖升级
- 依赖库版本升级和安全漏洞修复
- buession-geoip: 升级 IP 库
⭐ 新特性
- buession-core: ListBuilder、MapBuilder、QueueBuilder、SetBuilder 增加可以直接传递 List、Map、Queue、Set 实例的 create 方法
- buession-core: Assert isEmpty 和 notEmpty 增加基础类型数组判断
- buession-core: StringUtils 增加 random 增加支持字符串
- buession-geoip: 增加返回 autonomous system number、autonomous system organization
- buession-geoip: 增加可支持设置 asn 库地址或流
- buession-httpclient: 支持原生 RequestBody 子类转换
- buession-web: 增加 web binder 转换器工厂 IgnoreCaseEnumConverterFactory 忽略大小写将字符串转换为枚举值
- buession-web: 获取客户端真实 IP,增加标头 Client-IP 的支持
🔔 变化
- buession-web: 废弃 web binder 转换器 CaseTypeConverter、DomainTLDConverter、DomainTLDTypeConverter、GenderConverter、IpTypeConverter、ISBNTypeConverter、OrderConverter、StatusConverter,统一使用 web binder 转换器工厂 IgnoreCaseEnumConverterFactory
- buession-core: Executor、Resolve 增加异常支持
🐞 Bug 修复
- buession-core: 修复 RandomDigitIdGenerator 最大值大于最小值时报错的问题
- buession-httpclient: 修复 Response 返回错误的 statusCode 和 statusText
- buession-dao: 修复 DefaultJsonTypeHandler 为 null 或空字符串反序列化出错的 BUG
⏪ 优化
- 其它优化
v2.1.2
🔨依赖升级
⭐ 新特性
- buession-core: ListBuilder、MapBuilder、QueueBuilder、SetBuilder 增加可以指定 initialCapacity 和 Collection / Map 的 create 方法
⏪ 优化
- buession-http: 优化 Response,使 statusCode、statusText 与 statusLine 的值始终保持一致
- buession-geoip: 优化国家和地区词典解析,GeoIPResolverFactory 支持从默认词典返回文件对象或流对象,以及支持从 classpath 家长词典文件
- 其它优化
🐞 Bug 修复
- buession-redis: 修复 jedis 单例模式、哨兵模式下,不使用连接池的情况下,未创建 jedis 实例的 BUG
📔 文档
- buession-redis: 修正错误的注释
v2.1.1
v2.1.0
⭐ 新特性
- buession-core: 新增对象解析接口 Resolve
- buession-core: PropertyMapper 增加 alwaysApplyingWhenHasText() 方法,用于判断源属性是否含有内容
- buession-web: 注解 @RequestClientIp 增加支持返回 InetAddress
- buession-web: 注解 @RequestClientIp 支持指定获取真实 IP 的请求头名称
🔔 变化
- buession-aop: 调整 AnnotationResolver 及其实现泛型参数,由类泛型参数,调整为 getAnnotation 泛型
- buession-aop: AnnotationHandler execute 方法不再返回值
- buession-web: 优化注解 @RequestClientIp HandlerMethodArgumentResolver,继承 spring 原生 HandlerMethodArgumentResolver 实现抽象类
- buession-web: 废弃 MobileFilter,根据需要直接使用 RequestUtils.isMobile(request) 判断
- buession-web: 删除 AopUtils、MethodUtils,删除 servlet HttpServlet、webflux ServerHttp
- buession-web: MethodInterceptor 的抽象类移至 buession-aop
- buession-velocity: 配置属性 springMacro.resource.loader.class 替换为 resource.loader.springMacro.class,resource.loader 替换 resource.loaders
⏪ 优化
- buession-aop: 优化注解处理程序
- buession-web: 优化 servlet 注解处理
🐞 Bug 修复
- buession-aop: 修复注解在 cglib 代理模式下,连接点重复执行的 BUG
- buession-web: 修复 ReactiveContentTypeAnnotationMethodInterceptor 使用成了 servlet 模式下的 ContentTypeAnnotationMethodInterceptor 的 BUG