Notification
Restlight1.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