Spring 集成中的事务感知 POJO
Transaction-aware POJO in Spring Integration
我正在使用基本上是文本转换服务的 POJO(实际上是 POGO)实现自定义 Transformer。
我想让它成为它所属的事务的"aware",并且在事务结束时,如果整个事务成功则调用一个方法,如果事务回滚则调用另一个方法。
有什么提示吗?
谢谢!
你需要的是TransactionSynchronization
。但我不确定你是否应该担心这么低的水平,它们足以让你 try...catch
TX 东西。
即使它是 POJO(或 POGO?),您仍然将其配置为 <transformer>
(@Transformer
)。 Spring 集成中的此类组件具有 <request-handler-advice-chain>
(adviceChain
) 选项,可在 handleRequestMessage
方法调用周围插入任何 Advice
实现。
为了您的目的,您可以这样做:
<transformer>
<request-handler-advice-chain>
<beans:bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
<beans:property name="onSuccessExpression" value=""/>
<beans:property name="onFailureExpression" value=""/>
</beans:bean>
<tx:advice>
<tx:attributes>
<tx:method name="*" />
</tx:attributes>
</tx:advice>
</request-handler-advice-chain>
</transformer>
其中 TX 语义将被 ExpressionEvaluatingRequestHandlerAdvice
包裹,对 TX 结果调用所需的操作,在我们的案例中,这是基于 TX 回滚 Exception
的事实。
有关 <request-handler-advice-chain>
的更多信息,您可以阅读 Reference Manual。
我正在使用基本上是文本转换服务的 POJO(实际上是 POGO)实现自定义 Transformer。
我想让它成为它所属的事务的"aware",并且在事务结束时,如果整个事务成功则调用一个方法,如果事务回滚则调用另一个方法。
有什么提示吗?
谢谢!
你需要的是TransactionSynchronization
。但我不确定你是否应该担心这么低的水平,它们足以让你 try...catch
TX 东西。
即使它是 POJO(或 POGO?),您仍然将其配置为 <transformer>
(@Transformer
)。 Spring 集成中的此类组件具有 <request-handler-advice-chain>
(adviceChain
) 选项,可在 handleRequestMessage
方法调用周围插入任何 Advice
实现。
为了您的目的,您可以这样做:
<transformer>
<request-handler-advice-chain>
<beans:bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
<beans:property name="onSuccessExpression" value=""/>
<beans:property name="onFailureExpression" value=""/>
</beans:bean>
<tx:advice>
<tx:attributes>
<tx:method name="*" />
</tx:attributes>
</tx:advice>
</request-handler-advice-chain>
</transformer>
其中 TX 语义将被 ExpressionEvaluatingRequestHandlerAdvice
包裹,对 TX 结果调用所需的操作,在我们的案例中,这是基于 TX 回滚 Exception
的事实。
有关 <request-handler-advice-chain>
的更多信息,您可以阅读 Reference Manual。