Spring 集成 Java DSL .handle(String beanName, String methodName)
Spring Integration Java DSL .handle(String beanName, String methodName)
.handle("someBean", "someMethod")
EIP方式我见过很多,在集成流程中发挥着巨大的作用。我可以理解它只是前 XML 配置中的一个服务激活器,但我需要澄清一下如何创建这个 bean 以及 someMethod
return 的作用。另外,在什么情况下我必须使用.handle(...)
?也许使用 Java DSL 的完整示例应该适合我。
正确注意到 .handle("someBean", "someMethod")
完全等于 <int:service-activator ref="someBean" method="someMethod"/>
:https://docs.spring.io/spring-integration/reference/html/messaging-endpoints-chapter.html#service-activator-namespace.
这意味着您应该在 someMethod
中为服务调用定义 someBean
。例如,您需要执行简单的逻辑将传入消息的 payload
转换为大写,并将 return 结果转换为:
class MyService {
public String someMethod(String payload) {
return payload.toUpperCase();
}
}
此方法的 return 成为您 IntegrationFlow
定义中下一个 EIP 端点的出站消息的 payload
。
您在参考手册中看到的所有内容都完全适用于 Java DSL。特别是 <service-activator>
或 @ServiceActivator
的所有规则都适用于此 .handle()
.
.handle("someBean", "someMethod")
EIP方式我见过很多,在集成流程中发挥着巨大的作用。我可以理解它只是前 XML 配置中的一个服务激活器,但我需要澄清一下如何创建这个 bean 以及 someMethod
return 的作用。另外,在什么情况下我必须使用.handle(...)
?也许使用 Java DSL 的完整示例应该适合我。
正确注意到 .handle("someBean", "someMethod")
完全等于 <int:service-activator ref="someBean" method="someMethod"/>
:https://docs.spring.io/spring-integration/reference/html/messaging-endpoints-chapter.html#service-activator-namespace.
这意味着您应该在 someMethod
中为服务调用定义 someBean
。例如,您需要执行简单的逻辑将传入消息的 payload
转换为大写,并将 return 结果转换为:
class MyService {
public String someMethod(String payload) {
return payload.toUpperCase();
}
}
此方法的 return 成为您 IntegrationFlow
定义中下一个 EIP 端点的出站消息的 payload
。
您在参考手册中看到的所有内容都完全适用于 Java DSL。特别是 <service-activator>
或 @ServiceActivator
的所有规则都适用于此 .handle()
.