如何对方法进行注释以便处理特定标头值的消息?我已经在XML配置中有一个HeaderValueRouter,它路由到适当的类并根据有效负载类型执行正确的方法。我想在这个类中注释一些方法(特别是没有参数),如下所示:
@Router(header("operation")="one")
public String getOne() {}
@Router(header("operation")="two")
public String getTwo() {}
这一点的目的是启用类似REST的服务,用户可以调用像../service/one这样的URL,Spring Integration会将操作头设置为" one"。基本上我希望能够快速地向我的Web服务添加方法,并且通过将上述注释添加到我的底层服务来自动工作。
答案 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() {}