Source:
public MessageChannel resolveDestination(String channelName) { MessageChannel channel = null; DestinationResolutionException destinationResolutionException; try { return super.resolveDestination(channelName); } catch (DestinationResolutionException e) { destinationResolutionException = e; } synchronized (this) { if (this.beanFactory != null && this.binderFactory != null) { String[] dynamicDestinations = null; if (this.channelBindingServiceProperties != null) { dynamicDestinations = this.channelBindingServiceProperties.getDynamicDestinations(); } boolean dynamicAllowed = ObjectUtils.isEmpty(dynamicDestinations) || ObjectUtils.containsElement(dynamicDestinations, channelName); if (dynamicAllowed) { String binderName = null; String beanName = channelName; if (channelName.contains(":")) { String[] tokens = channelName.split(":", 2); if (tokens.length == 2) { binderName = tokens[0]; channelName = tokens[1]; } else if (tokens.length != 1) { throw new IllegalArgumentException("Unrecognized channel naming scheme: " + channelName + " , should be" + " [<transport>:]<channelName>"); } } channel = new DirectChannel(); this.beanFactory.registerSingleton(beanName, channel); channel = (MessageChannel) this.beanFactory.initializeBean(channel, beanName); @SuppressWarnings("unchecked") Binder<MessageChannel, ?, ProducerProperties> binder = (Binder<MessageChannel, ?, ProducerProperties>) binderFactory.getBinder(binderName); Class<? extends ProducerProperties> producerPropertiesClass = ChannelBindingService.resolveProducerPropertiesType(binder); ProducerProperties producerProperties = this.channelBindingServiceProperties.getProducerProperties(channelName, producerPropertiesClass); String destinationName = this.channelBindingServiceProperties.getBindingDestination(channelName); this.dynamicDestinationsBindable.addOutputBinding(beanName, binder.bindProducer(destinationName, channel, producerProperties)); } else { throw destinationResolutionException; } } return channel; } }

Target:
public MessageChannel resolveDestination(String channelName) { MessageChannel channel = null; DestinationResolutionException destinationResolutionException; try { return super.resolveDestination(channelName); } catch (DestinationResolutionException e) { destinationResolutionException = e; } synchronized (this) { if (this.beanFactory != null && this.binderFactory != null) { String[] dynamicDestinations = null; if (this.channelBindingServiceProperties != null) { dynamicDestinations = this.channelBindingServiceProperties.getDynamicDestinations(); } boolean dynamicAllowed = ObjectUtils.isEmpty(dynamicDestinations) || ObjectUtils.containsElement(dynamicDestinations, channelName); if (dynamicAllowed) { String binderName = null; String beanName = channelName; if (channelName.contains(":")) { String[] tokens = channelName.split(":", 2); if (tokens.length == 2) { binderName = tokens[0]; channelName = tokens[1]; } else if (tokens.length != 1) { throw new IllegalArgumentException("Unrecognized channel naming scheme: " + channelName + " , should be" + " [<binder>:]<channelName>"); } } channel = new DirectChannel(); this.beanFactory.registerSingleton(beanName, channel); channel = (MessageChannel) this.beanFactory.initializeBean(channel, beanName); @SuppressWarnings("unchecked") Binder<MessageChannel, ?, ProducerProperties> binder = (Binder<MessageChannel, ?, ProducerProperties>) binderFactory.getBinder(binderName); Class<? extends ProducerProperties> producerPropertiesClass = ChannelBindingService.resolveProducerPropertiesType(binder); ProducerProperties producerProperties = this.channelBindingServiceProperties.getProducerProperties(channelName, producerPropertiesClass); String destinationName = this.channelBindingServiceProperties.getBindingDestination(channelName); this.dynamicDestinationsBindable.addOutputBinding(beanName, binder.bindProducer(destinationName, channel, producerProperties)); } else { throw destinationResolutionException; } } return channel; } }