Source:
public final Binding<MessageChannel> doBindProducer(final String destination, MessageChannel outputChannel, final P producerProperties) throws BinderException { Assert.isInstanceOf(SubscribableChannel.class, outputChannel, "Binding is supported only for SubscribableChannel instances"); final ProducerDestination producerDestination = this.provisioningProvider.provisionProducerDestination(destination, producerProperties); final MessageHandler producerMessageHandler; try { producerMessageHandler = createProducerMessageHandler(producerDestination, producerProperties); if (producerMessageHandler instanceof InitializingBean) { ((InitializingBean) producerMessageHandler).afterPropertiesSet(); } } catch (Exception e) { if (e instanceof BinderException) { throw (BinderException) e; } else if (e instanceof ProvisioningException) { throw (ProvisioningException) e; } else { throw new BinderException("Exception thrown while building outbound endpoint", e); } } if (producerMessageHandler instanceof Lifecycle) { ((Lifecycle) producerMessageHandler).start(); } ((SubscribableChannel) outputChannel).subscribe( new SendingHandler(producerMessageHandler, !this.supportsHeadersNatively && HeaderMode.embeddedHeaders .equals(producerProperties.getHeaderMode()), this.headersToEmbed, producerProperties.isUseNativeEncoding())); return new DefaultBinding<MessageChannel>(destination, null, outputChannel, producerMessageHandler instanceof Lifecycle ? (Lifecycle) producerMessageHandler : null) { @Override public void afterUnbind() { afterUnbindProducer(producerDestination, producerProperties); } }; }

Target:
public final Binding<MessageChannel> doBindProducer(final String destination, MessageChannel outputChannel, final P producerProperties) throws BinderException { Assert.isInstanceOf(SubscribableChannel.class, outputChannel, "Binding is supported only for SubscribableChannel instances"); final MessageHandler producerMessageHandler; final ProducerDestination producerDestination; try { producerDestination = this.provisioningProvider.provisionProducerDestination(destination, producerProperties); producerMessageHandler = createProducerMessageHandler(producerDestination, producerProperties); if (producerMessageHandler instanceof InitializingBean) { ((InitializingBean) producerMessageHandler).afterPropertiesSet(); } } catch (Exception e) { if (e instanceof BinderException) { throw (BinderException) e; } else if (e instanceof ProvisioningException) { throw (ProvisioningException) e; } else { throw new BinderException("Exception thrown while building outbound endpoint", e); } } if (producerMessageHandler instanceof Lifecycle) { ((Lifecycle) producerMessageHandler).start(); } ((SubscribableChannel) outputChannel).subscribe( new SendingHandler(producerMessageHandler, !this.supportsHeadersNatively && HeaderMode.embeddedHeaders .equals(producerProperties.getHeaderMode()), this.headersToEmbed, producerProperties.isUseNativeEncoding())); return new DefaultBinding<MessageChannel>(destination, null, outputChannel, producerMessageHandler instanceof Lifecycle ? (Lifecycle) producerMessageHandler : null) { @Override public void afterUnbind() { afterUnbindProducer(producerDestination, producerProperties); } }; }