跳到主要内容
版本:4.1.1

@RabbitListener @Payload 校验

Doubao 中英对照 @RabbitListener @Payload Validation

从 2.3.7 版开始,现在添加 Validator 来校验 @RabbitListener 和 @RabbitHandler 的 @Payload 参数变得更容易了。现在,你只需把校验器添加到 registrar 本身即可。

@Configuration
@EnableRabbit
public class Config implements RabbitListenerConfigurer {
...
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
registrar.setValidator(new MyValidator());
}
}
备注

当将 Spring Boot 与 validation starter 一起使用时,会自动配置一个 LocalValidatorFactoryBean:

@Configuration
@EnableRabbit
public class Config implements RabbitListenerConfigurer {
@Autowired
private LocalValidatorFactoryBean validator;
...
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
registrar.setValidator(this.validator);
}
}

为了进行校验:

public static class ValidatedClass {
@Max(10)
private int bar;
public int getBar() {
return this.bar;
}
public void setBar(int bar) {
this.bar = bar;
}
}

以及

@RabbitListener(id="validated", queues = "queue1", errorHandler = "validationErrorHandler",
containerFactory = "jsonListenerContainerFactory")
public void validatedListener(@Payload @Valid ValidatedClass val) {
...
}
@Bean
public RabbitListenerErrorHandler validationErrorHandler() {
return (m, e) -> {
...
};
}