Spring Integration - HeaderValueRouter的注释

时间:2014-06-04 19:14:05

标签: spring-integration

如何对方法进行注释以便处理特定标头值的消息?我已经在XML配置中有一个HeaderValueRouter,它路由到适当的类并根据有效负载类型执行正确的方法。我想在这个类中注释一些方法(特别是没有参数),如下所示:

@Router(header("operation")="one")
public String getOne() {}

@Router(header("operation")="two")
public String getTwo() {}

这一点的目的是启用类似REST的服务,用户可以调用像../service/one这样的URL,Spring Integration会将操作头设置为" one"。基本上我希望能够快速地向我的Web服务添加方法,并且通过将上述注释添加到我的底层服务来自动工作。

1 个答案:

答案 0 :(得分:0)

没有这样的机制。即使它看起来很有趣,我也不确定我们是否应该引入它 - 它打破了一些消息传递问题

无论如何,使用XML <header-value-router>,其channel-mapping。那个指定了to send消息调用适当service-activator的位置。

所以,我建议你使用注释做同样的事情:

@MessagingGateway(defaultRequestChannel = "routerChannel")
public interface ServiceGateway {

    Object invoke(String operation);

}
....

@Autowired
private ServiceGateway serviceGateway;

@RequestMapping("/service/{operation}")
public Object operation(@PathVariable String operation) {
    return this.serviceGateway.invoke(operation);
}

@Router(inputChannel = "routerChannel")
public String route(String operation) {
    return operation;
}

...
@ServiceActivator(inputChannel = "one")
public String getOne() {}
...
@ServiceActivator(inputChannel = "two")
public String getTwo() {}