我扩展了AbstractByteArraySerializer
,现在我想像其他可用的TCP序列化程序一样使用这个序列化程序(LF,NULL,L1,...)。
我在tcp-encdec.xml
找到了个人资料并注册了我自己的个人资料:
...
<beans profile="use-custom">
<bean id="CUSTOM"
class="custom.tcp.serializer.ByteArrayCustomSerializer">
<property name="maxMessageSize" value="${bufferSize}" />
</bean>
</beans>
...
Spring使用EncoderDecoderMixins.Encoding
将Encoding
转换为特定的个人资料。
EncoderDecoderMixins.Encoding
是最后一堂课的枚举。 Spring将decoder
TCP属性转换为基于此枚举的特定配置文件。我的CUSTOM序列化程序无法正常工作,因为它不在指定的Encodings
中。
是否有办法注册新的Encoding
或者我是否必须编写新的源模块才能使用我的序列化程序?
答案 0 :(得分:1)
不幸的是,您需要一个自定义来源;我们可能会添加另一个枚举,例如CUSTOM
,您可以在其中提供反序列化程序的类名,但需要更改标准源。
快速而肮脏的解决方法是在本地修改源:
<int-ip:tcp-connection-factory id="connectionFactory"
...
deserializer="myDeserializer"/>
<bean id="myDeserializer" class="foo.Deser" />
即。将${decoder}
占位符更改为指向您的bean。