2014-10-22 194 views
0

我正在努力寻找使用@Router注释的示例。如果我理解正确的javadoc:弹簧集成路由器配置

@Service 
public class AgentServiceImpl implements AgentService { 

    @Override 
    @Router(inputChannel = "agentLogin", defaultOutputChannel = "agentServiceResponse") 
    public AgentLoginResponse login(AgentLoginRequest request) { 

    } 
} 

与路由器的XML实例有一个服务的激活,这就是我收到挂在试图弄清楚它是如何将适合在

回答

0

其实你做错了。见@Router的JavaDoc:

* Indicates that a method is capable of resolving to a channel or channel name 
* based on a message, message header(s), or both. 

所以,你的目标router组件login方法必须返回一个channel name或整个MessageChannel对象。

+0

那么@Router会使用自己的逻辑来发送消息,而不是像负载或表达式路由器那样使用Spring集成路由器? – user3465651 2014-10-22 09:46:24

+0

对不起,我不明白你的问题。 '@路由器'与''完全相同。正如我们所知,最后一个基于来自底层处理器(表达式或POJO)的某个值的映射逻辑。由于我们用'@Router'标记了一个方法,可能没有理由有'mapping',因为我们总是可以从该方法返回一个通道名称。从另一方面来看,这个注释具有附加选项 - 'channelMappings()'。再次:请参阅JavaDocs。 – 2014-10-22 09:55:48