我有以下 xml,我想用 @Configuration
类替换这个烦人的 xml
<int:gateway id="someActionGateway "
service-interface="x.y.z.SomeActionGateway"
default-request-channel="some-action-channel-raw" />
<int:channel id="some-action-channel-raw" />
<int:header-enricher input-channel="some-action-channel-raw" output-channel="some-action-to-json-channel">
<int:header name="someAction" value="sendSomething"/>
</int:header-enricher>
<int:channel id="some-action-to-json-channel" />
<int:object-to-json-transformer
input-channel="some-action-to-json-channel" output-channel="some-action-outbound-channel"
content-type="text/x-json" />
<int:channel id="some-action-outbound-channel" />
<int-amqp:outbound-channel-adapter
channel="some-action-outbound-channel" exchange-name="some-action-exchange"
routing-key="someAction.routing.key" amqp-template="amqpTemplate"
mapped-request-headers="*">
</int-amqp:outbound-channel-adapter>
<rabbit:direct-exchange name="some-action-exchange"
auto-delete="false" durable="true">
<rabbit:bindings>
<rabbit:binding queue="some-action-queue" key="someAction.routing.key" />
</rabbit:bindings>
</rabbit:direct-exchange>
和我的网关:
public interface SomeActionGateway {
@Gateway
public void sendSomething(@Payload SomeDto dto);
}
我已经在 spring-amqp 使用配置注释类,它工作得很好。 如何使用 Spring Integration 配置执行相同的操作?
P.S:我正在使用 Spring 3.2 和 Spring 集成 3.0
最佳答案
很抱歉您发现 XML 配置“烦人”。
我们正在努力改进 Spring Integration 的 JavaConfig (@Configuration
) 体验。
您现在可以使用 JavaConfig 连接任何端点,但这并不漂亮;端点可以与 MessageDrivenConsumer
(或 PollingConsumer
)以及适当的 MessageHandler
一起连接。您必须深入研究 ConsumerEndpointFactoryBean
和 XML 解析器以获取完整的详细信息;大多数组件需要多个 bean 定义。
就像我说的,我们正在努力;我们目前有一个开放的 Pull Request对于网关,并且正在进行 Java DSL in the extensions repo但这是一个正在进行中的工作,Scala 和 Groovy DSL 也是如此。
编辑:
Spring Integration 4.0 使使用 @Configuration
变得更加容易。
查看最近的webinar .
关于spring - Spring Integration 的带注释的配置用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868109/