java - Spring Cloud Stream 验证

标签 java spring validation spring-boot spring-cloud-stream

如何使用 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/

相关文章:

Javascript getElementsByTagName ("input").value 不返回结果

java - 如何实现二进制到ascii的转换? (反之亦然)

java - 将 boolean 值作为路径变量发送到 Controller

javascript - 如何在三元运算符上告诉 javascript "any number bigger than"?

android - 从 Android 应用程序接收服务器(Spring Framework)上的 POST 请求

PHP 表单和 DB 查询输入验证

java - 我在另一个 'for loop' 中的 'for loop' 不工作

java - 用于 Swing 的类似 Android/iPhone 的 ScrollView

java - java中的开放类或隐式类

sql - 将四个表列限制为 Firebird DBMS 中的不同值