我扩展了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属性转换为基于此枚举的特定配置文件。我的自定义序列化程序不工作,因为它不在指定的Encodings
中。是否有方法注册一个新的
Encoding
或者我必须编写一个新的源模块才能使用序列化程序? 最佳答案
不幸的是,您将需要一个自定义源;我们可能会添加另一个枚举,例如CUSTOM
,您可以在其中提供反序列化程序的类名,但这将需要更改标准源。
快速而肮脏的解决方法是在本地修改源:
<int-ip:tcp-connection-factory id="connectionFactory"
...
deserializer="myDeserializer"/>
<bean id="myDeserializer" class="foo.Deser" />
例如,更改
${decoder}
占位符以指向bean。关于java - Spring XD使用自定义TCP序列化程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35554870/