In addition, if your entry point is a channel adapter or gateway that supports transactions (e.g. JMS, AMQP, JDBC, JPA, ..) and you use the default channels, the entire flow will go through this transaction, as the context of the transaction connected to the stream. If you add any buffering channels or a top-down aggregator, then you will want to consider what Gary mentioned so that you actually complete the initial transaction, transferring responsibility to another reliable resource (as opposed to leaving a message in the memory card and, for example, committing, i.e.).
Hope this makes sense.
Shameless Plugin: There is a good overview of transactions in Spring Integration in Action, now available through MEAP: http://manning.com/fisher/
Regards, Mark
source