@MessagingGateway
允许defaultRequestChannel
使用属性占位符${} 来设置注释:
@MessagingGateway(defaultRequestChannel = "${gateway.request.channel}")
public interface MessageGateway {
@Gateway(requestTimeout = 2000)
void sendListing(List<Path> entries);
}
但我无法对@Gateway注释进行类似操作:
@MessagingGateway
public interface MessageGateway {
@Gateway(requestTimeout = 2000, requestChannel = "${gateway.request.channel}") // invalid
void sendListing(List<Path> entries);
}
类似地,我无法使用属性占位符或 SpEl 动态设置 ServiceActivator inputChannel
。outputChannel
我是否需要ServiceActivator
使用手动配置ServiceActivatingHandler
?
属性占位符从未在这些注释上起作用。最初这样的功能只是 XML 配置的一部分。虽然使用 Java 和 DSL 配置确实可以非常轻松地实现这一点,但注释的发展已经落后了。
@MessagingGateway
引入的有点晚,并且resolveEmbeddedValue
对其属性提出了这样的要求。我想知道,如果这些通道名称可以从属性中动态解析,那么对于应用程序逻辑来说,会有什么区别。