### 兼容说明

404 和 405 等 4xx 状态的“定制”，通过 StatusException 处理（如果没有定制，不用管）。例如：

* 旧的 404 识别（比较模糊）

```java
@Component(index = 0) //index 为顺序位（不加，则默认为0）
public class AppFilter implements Filter {
    @Override
    public void doFilter(Context ctx, FilterChain chain) throws Throwable {
        chain.doFilter(ctx);

        if(ctx.getHandled() == false){
            ctx.render(Result.failure(404, "资源不存在"));
        }
    }
} 
```

* 新的 `SolonTest` 注解默认使用 junit5，并做了简化

具体参考文档：[Solon Test 开发](/article/learn-solon-test)


* 新的 404 识别（更丰富，更精准）

```java
@Component(index = 0) //index 为顺序位（不加，则默认为0）
public class AppFilter implements Filter {
    @Override
    public void doFilter(Context ctx, FilterChain chain) throws Throwable {
        try{
            chain.doFilter(ctx);
        } catch (StatusException e) {
            if (e.getCode() == 404){
                ctx.render(Result.failure(404, "资源不存在"));
            } else if (e.getCode() == 405){
                ctx.render(Result.failure(405, "资源方式不支持"));
            } else if (e.getCode() == 400){
                ctx.render(Result.failure(400, "请求格式或参数有问题"));
            }
        }
    }
} 
```

更多异常类型，可见：[《Solon 开发之异常》](/article/756)。另一处重要变化为 JUnit5 成为默认单测方案，详见：[《Solon Test 开发》](/article/323)


### 更新说明

* 新增 thrift-solon-cloud-plugin 插件
* 新增 solon.serialization.jackson.xml 插件
* 添加 `@Destroy` 注解（与 `@Init` 呼应）
* 添加 Serializer 接口，统一多处模块的序列化定义
* 添加 BytesSerializerRender 类，对应 StringSerializerRender
* 添加 solon.net.stomp ToStompWebSocketListener 适配 WebSocket 子协议验证
* 添加 solon.net ToSocketdWebSocketListener 适配 WebSocket 子协议验证
* 添加 graphql-solon-plugin GraphqlWebsocket 适配 WebSocket 子协议验证
* 添加 WebSocket 子协议校验支持（smarthttp,jetty,undertow,java-websocket,netty-websocket）
* 添加 应用配置键名二次引用支持
* 添加 folkmq 适配 EventLevel.instance 订阅支持
* 添加 rocketmq5 适配 EventLevel.instance 订阅支持
* 添加 solon.boot.socketd 对 ssl 配置的支持
* 添加 beetl 适配自定义 Tag 注入支持
* 添加 enjoy 适配自定义 Tag 注入支持
* 添加 StatusException 异常类型
* 调整 AuthException 改为扩展自 StatusException（之前为 SolonException）
* 调整 ValidatorException 改为扩展自 StatusException（之前为 SolonException）
* 调整 Action 参数解析异常类型为 StatusException（之前为 IllegalArgumentException）
* 调整 solon.test 默认为 junit5 并简化 SolonTest 体验（不用加 ExtendWith 了），需要 junit4 的需引入 solon-test-junit4
* 优化 CloudClient.event().newTranAndJoin() 增加 inTrans 判断
* 优化 mybatis-solon-plugin 在有 mapper 配置，但无 mapper 注册时的异常提示（原为 warn 日志提示）
* 优化 RouteSelectorExpress 的路由顺序（常量的，优于变量的）
* 优化 kafka 适配的 ack 处理
* 修复 IndexUtil:buildGatherIndex 处理字段时，会出错的问题
* snack3 升为 3.2.100
* fastjson2 升为 2.0.51
* socket.d 升为 2.5.3
* folkmq 升为 1.5.2
* wood 升为 1.2.11
* sqltoy 升为 5.6.10.jre8
* mybatis-flex 升为 1.9.1
* smarthttp 升为 1.4.2
* okhttp 升为 4.12.0
* xxl-job 升为 2.4.1
* graphql 升为 18.3