当需要对某些特殊的类进行序列化时,可以实现SerializerResolver来指定序列化时使用的Serializer。
比如,对ProtoBuf的对象进行Breeze序列化时,可以引入breeze-protobuf模块,这个模块就是通过实现ProtoBufResolver来支持PB对象的序列化。
public class ProtoBufResolver implements Breeze.SerializerResolver
入参中的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需要注册才能生效。注册的方法如下:
Breeze.addResolver(new MySerializerResolver());
完整实现可以参考ProtoBufResolver
There was an error while loading. Please reload this page.