2014-10-22 195 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