最简单的机制是将服务接口实现为 POJO 并从
<service-activator input-channel="..." output-channel="..."
ref="myPojo" method="process" />
在哪里
public class MyPoJo {
public Bar process(Foo foo) {
...
}
}
如果您想更正式地这样做,您可以扩展AbstractReplyProducingMessageHandler
. 并将其包装在消费者端点中,但大多数人更喜欢 POJO 路由,因为那样您将没有框架依赖项。
编辑:
如果您使用 Spring Tool Suite(基于 eclipse),有一个入门项目可以帮助您使用模板构建一个成熟的网关;它包括命名空间解析器的起始类和一切(New | Spring | Spring Project | Integration ...
)。模板托管在这里。它们有点过时(例如需要 SI 更新,而且我们不再使用 docbook - 至少在 master 上 - 我们使用 asciidoc),但它应该会让你走很长一段路。您还可以查看标准解析器以获取有关命名空间的帮助。
如果您认为您的网关可能具有广泛的吸引力,请考虑将其贡献给扩展。
编辑2:
从你的评论...
据我了解,出站网关用于提供与外部系统的集成,服务激活器用于本地服务调用
通常是这种情况,但是没有什么可以阻止您通过 a 调用外部服务<service-activator/>
- 这是个人喜好问题,没有真正的理由创建正式的适配器,除非您希望发布它以供您的组织内部使用并且/ 或以更正式的方式将其贡献给社区。