我目前正在使用柑橘框架测试应用程序。 我的接口之一使用Protobuf,我想实现一个与弹簧集成兼容的protobuf-to-json-transformer,使其与以下类似,但与我的转换器而不是object-to-string-transformer一起使用: / p>
<int:channel id="configRawReplies" />
<int:object-to-string-transformer id="configtransformer" input-channel="configRawReplies" output-channel="configResponse" />
<int:channel id="configResponse">
<int:queue />
</int:channel>
目前,我有一个与object-to-string-transformer完全一样的原型,并在其中加载:
<bean id="Proto2Json" class="com.nobody.citrus.transformer.ProtoToJSONString">
<property name="input-channel" value="none"/>
<property name="output-channel" value="none"/>
</bean>
但是失败。
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Proto2Json' defined in URL [file:/Users/nobody/DevOops/test/citrus-scala/target/test-classes/citrus-context.xml]:
Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException:
Invalid property 'input-channel' of bean class [com.pme.citrus.transformer.ProtoToJSONString]:
Bean property 'input-channel' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
有人有想法或提示可以在网上找到什么地方吗?
BR
答案 0 :(得分:1)
是的。您确实需要遵循ObjectToStringTransformer
中的设计来实现自己的AbstractPayloadTransformer
。在您的应用程序上下文中,该定义必须是简单的<bean>
定义。
只有一个问题,您不明白为什么我们真的拥有所有这些自定义标签来同时利用input-channel
和output-channel
属性。关键是,例如,这个
<int:object-to-string-transformer>
为应用程序上下文提供了几个bean,包括提到的ObjectToStringTransformer
实例,一个MessageTransformingHandler
以及最后一个ConsumerEndpointFactoryBean
来连接一个MessageHandler
和inputChannel
。
因此,您缺少的是自定义<int:transformer>
实现的通用AbstractPayloadTransformer
定义:
<bean id="Proto2Json" class="com.nobody.citrus.transformer.ProtoToJSONString"/>
<int:tranformer ref="Proto2Json" input-channel="configRawReplies" output-channel="configResponse"/>
请阅读更多参考手册,以避免以后再进行类似的讨论:
https://docs.spring.io/spring-integration/reference/html/overview.html#programming-tips
https://docs.spring.io/spring-integration/reference/html/messaging-transformation-chapter.html