【发布时间】:2015-07-05 02:00:15
【问题描述】:
在 Spring Integration 中进行验证的最佳方法是什么。 例如,如果我们有一个入站网关,当收到一条消息时,我们想要验证它。如果它无效 -> 将验证错误返回到网关,否则 -> 继续应用程序的正常流程(转换、处理 ...)。
我尝试了一个过滤器:
@Bean
public IntegrationFlow flow() {
return IntegrationFlows.from(requestChannel())
.transform(new MapToObjectTransformer(Campaign.class))
.filter(Campaign.class,
c -> c.getId() > 10 ? true : false, //if id > 10 then it's valid
e -> e.discardChannel(validationError()))
.handle(new MyHandler())
.get();
}
@Bean
public IntegrationFlow validationErrorFlow() {
return IntegrationFlows.from(validationError())
.handle(new ValidationHandler())//construct a message with the validation errors
.get();
}
它可以工作,但是如果我使用spring validator,那么我必须在过滤器和 ValidationHandler(可以是转换器)中调用它两次以获取错误。
有更好的方法吗?
【问题讨论】:
标签: java spring validation spring-integration