如果我们使用@MessagingGateway,则不需要@Gateway

@Gateway is not required if we use @MessagingGateway

从 Spring 4.0 开始引入 @MessagingGateway。如果我们的Gateway接口中只有一个网关方法就可以使用它,那么我们就不需要用@Gateway注解Gateway方法了。 下面是我的例子,两者都在工作。

所以,我的问题是当我们在网关接口中只有一个方法时,我们可以停止使用@Gateway吗?

代码-1:

@MessagingGateway(name="demoGateway")
public interface DemoGateway {
    @Gateway(requestChannel = "gatewayRequestChannel",replyChannel = "nullChannel")
    void accept(Message<String> request);
}

代码 2:

@MessagingGateway(name="demoGateway",defaultRequestChannel = 
"gatewayRequestChannel",defaultReplyChannel = "nullChannel")
public interface DemoGateway {

    void accept(Message<String> request);
}

是的。你是对的。您可以执行方法 2,并保留确认 @MessagingGateway 默认配置的单一方法,无需注释。

然而在实践中,我只会将真正的默认值移动到 MessagingGateway 并将其他值留给 @Gateway 注释。

这是因为,如果您将来必须向 DemoGateway 添加更多方法,这将使以后的生活和可读性更轻松。