Search code examples
springspring-integration

Spring Integration - handlers vs interceptors


In Spring Integration, handlers and interceptors look like they basically achieve the same thing. There are even some 'duped' implementations, such as MessageTransformingChannelInterceptor and MessageTransformingHandler, which as far as I can tell provide the same functionality with different semantics.

Is there a time when one is appropriate and not another? If it's a matter of preference then I'm guessing that there'd be some sort of convention?

Thanks, Roy


Solution

  • My general rule of thumb is to use interceptors sparingly; and typically, only for "passive" things like logging, wire tap etc.

    Some users like to do message validation in interceptors; especially if they want to apply the same validation to multiple channels, perhaps with a global interceptor with an appropriate channel pattern.

    The transforming interceptor was created in a very early iteration of the framework (2008) and we should probably remove (at least) the only mention of it in the reference (in the XML section).