Skip to content

zh_serializerResolver

Ray edited this page Sep 11, 2019 · 1 revision

实现SerializerResolver

当需要对某些特殊的类进行序列化时,可以实现SerializerResolver来指定序列化时使用的Serializer。

比如,对ProtoBuf的对象进行Breeze序列化时,可以引入breeze-protobuf模块,这个模块就是通过实现ProtoBufResolver来支持PB对象的序列化。

自定义SerializerResolver

  1. 实现SerializerResolver 接口
       public class ProtoBufResolver implements Breeze.SerializerResolver
  1. 实现getSerializer方法给特定的类返回对应的Serializer

入参中的Class是需要进行序列化的类,一般Resolver判断这个Class是否是自己能处理的目标类,能处理的话就返回可以序列化这个类的对应的Serializer,不能处理就返回null。

        public Serializer getSerializer(Class<?> clz) {
            if (Message.class.isAssignableFrom(clz)) {
                try {
                    return new ProtobufSerializer(clz);
                } catch (BreezeException e) {
                    logger.warn("register ext serializer fail. clz:{}, e:{}", clz.getName(), e.getMessage());
                }
            }
            return null;
        }

加载SerializerResolver

自定义的SerializerResolver需要注册才能生效。注册的方法如下:

    Breeze.addResolver(new MySerializerResolver());

完整实现可以参考ProtoBufResolver

Clone this wiki locally