Notification
Restlight
1.0.0为不兼容的版本升级,如果你从其他版本升级到该版本可能会需要修改一定量的业务代码,具体包括:
- 包名修改:之前
esa.restlight
开头的包将统一以io.esastack.restlight
开头 - 修改自定义
ArgumentResolver
相关的实现,包括:ArgumentResolver
、ArgumentResolverAdapter
、ArgumentResolverFactory
、ArgumentResolverAdvice
、ArgumentResolverAdviceAdapter
、ArgumentResolverAdviceFactory
等,最新用法请参考参数解析和ParamResolverAdvice - 修改自定义
ReturnValueResolver
相关的实现,包括:ReturnValueResolver
、ReturnValueResolverAdapter
、ReturnValueResolverFactory
、ReturnValueResolverAdvice
、ReturnValueResolverAdviceAdapter
、ReturnValueResolverAdviceFactory
等,最新用法请参考返回值解析和ResponseEntityResolverAdvice - 修改自定义拦截器,包括:
HandlerInterceptor
、Interceptor
、InterceptorFactory
、MappingInterceptor
、RouteInterceptor
等, 最新用法请参考拦截器 - 修改自定义
Filter
,最新用法请参考:Filter - 其它使用
AsyncRequest
、AsyncResponse
的地方,具体请参考术语
Q&A
Q:为何不能兼容之前的版本?
- 全面支持JAX-RS3.0的需要:
Restlight
原有的请求处理流程和API设计无法满足JAX-RS3.0标准的需要,因此必须在框架核心逻辑上进行重新的设计和考量,而这势必导致接口无法完全向下兼容。 - 之前的设计已阻碍框架的进一步演进,比如:用户需要在自定义的异常处理器或过滤器中返回指定的entity、快速失败后返回自定义entity等功能就无法实现,因为响应entity的序列化时机和接口API设计上都存在局限性,以至于在不进行重新设计的情况下永远无法实现该功能。
- 接口易用性和可理解性的需要。
Q:升级成本高,可以不升级吗?
- 当然可以,之前版本已经比较稳定,如果出现重大bug我们会在原有版本上及时修复,保证0.x版本在生产环境稳定运行。
Feature
- 全面支持JAX-RS3.0
- 支持将Restlight打包成Native Image
- 支持接口上的注解
- 新增
RouteFilter
,在路由匹配完成之后执行 - 新增
StringConverter
相关接口,支持在参数解析阶段将String
转成自定义POJO
- 支持动态添加/卸载路由
HttpRequest
、HttpResponse
、参数解析、返回值处理等接口提供了更多方法,详见具体章节
Fix
Optimization
- 屏蔽对外暴露netty接口
- 将
AsyncRequest
和AsyncResponse
整合成RequestContext HttpBodySerializer
接口优化Serializer
命名优化- 当异常被成功处理时不打印异常栈
- 使用
CompletionStage
替换接口定义中的CompletableFuture