Spring 云流验证
Spring Cloud Stream validation
如何使用标准 Spring 基于注释的验证在消息侦听器中使用 Spring Cloud Stream 框架执行验证?
尝试了不同的情况,@Valid @Payload
用于传入对象,尝试方法验证 post 处理器与 @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"
如何使用标准 Spring 基于注释的验证在消息侦听器中使用 Spring Cloud Stream 框架执行验证?
尝试了不同的情况,@Valid @Payload
用于传入对象,尝试方法验证 post 处理器与 @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"