如何使用 Spring Cloud Stream 执行验证使用基于标准 Spring 注释的验证的消息监听器中的框架?
尝试了不同的情况,对传入对象使用 @Valid @Payload
,尝试对实体使用 @Validated
方法验证后处理器,但没有帮助。
@StreamListener(MediaItemStream.ITEM_LIKED_CHANNEL)
public void handleLikeMessage(@Valid @Payload LikeInputDto like) {...
和
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
目前最好的方法就是使用自定义服务进行验证,但它看起来并不理想..
@Log4j2
@Service
@AllArgsConstructor
public class LikeStreamHandler {
private MediaEventMessagingService mediaEventMessagingService;
private ValidationService validationService;
@StreamListener(MediaItemStream.ITEM_LIKED_CHANNEL)
public void handleLikeMessage(LikeInputDto like) {
validationService.validate(like);
log.debug("Handling LIKE message: {}", like);
mediaEventMessagingService.processLikeEvent(like);
}
}
最佳答案
这是 Spring Cloud Stream v2.1.0 的新特性:Issue on GitHub: "Add (javax.)Validation Support for Stream Listener"
关于java - Spring Cloud Stream 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47643216/