1
什麼是在Spring集成中進行驗證的最佳方式。 例如,如果我們有入站網關,當收到消息時,我們要驗證它。如果無效 - >將驗證錯誤返回給網關,否則 - >繼續執行應用程序的正常流程(變換,句柄...)。彈簧集成驗證
我嘗試了過濾器:
@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(可以是一個變壓器)來獲得錯誤。
有沒有更好的辦法?
感謝您的回答,加里。還有一件事:如果網關是'HttpRequestHandlingMessagingGateway',有沒有辦法返回'400 BadRequest'? –
發現它:GW通過'http_statusCode'標頭解析http狀態。所以:在處理程序'返回MessageBuilder.withPayload( 「一些錯誤」) \t \t \t .setHeader( 「http_statusCode」, 「400」) \t \t \t .build();' –