LGTM; except I wonder if we should add this...

	Assert.isTrue(((AnnotatedBeanDefinition) candidateComponent).getMetadata().isInterface(),
							"@MessagingGateway can only be specified on an interface");

...here. Without it, we get...

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'enableIntegrationTests$TestGateway2': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.integration.gateway.GatewayProxyFactoryBean]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: 'serviceInterface' must be an interface
    ...
    Caused by: java.lang.IllegalArgumentException: 'serviceInterface' must be an interface

... which I suppose is fairly obvious, to those who understand what's happening, but perhaps the `Assert` would be more helpful to newbies?

WDYT?