Spring Integration中的事务感知POJO

时间:2015-07-12 18:29:46

标签: java spring transactions spring-integration pojo

我正在使用POJO(实际上是一个POGO)实现一个自定义Transformer,它基本上是一个文本转换服务。

我想让它“了解”它所属的事务,并且在事务结束时,如果整个事务成功则调用方法,如果事务回滚则调用另一个方法。

任何提示?

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要的是TransactionSynchronization。但是我不确定你是否应该担心这么低的级别,而且仅仅try...catch TX的内容就足够了。

即使它是POJO(或POGO?),您也可以将其配置为<transformer>@Transformer)。 Spring Integration中的这种组件具有<request-handler-advice-chain>adviceChain)选项,可以在Advice方法调用周围插入任何handleRequestMessage实现。

为了您的目的,您可以这样做:

<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 rallback上Exception的事实。

有关<request-handler-advice-chain>的更多信息,请参阅Reference Manual