Spring 5 Webflux rest controller - 如何执行输入验证?

Spring 5 Webflux rest controller - How to perform input validation?

我正在构建一个具有一些 Rest 控制器的网络应用程序:

@RestController
@RequestMapping(value = Path.ROOT)
public class TestController {

    @Autowired
    private AService service;

    @RequestMapping(method = RequestMethod.POST)
    public Flux<ItemResponse> doSomething(@RequestBody @Valid final ItemRequest request) {
        return service.pleaseDoSomething(request);
    }


}

我的输入对象是这样的:

public Class ItemRequest{
   @NotNull
   private String anInputValue
}

我的应用有注解@EnableWebFlux

问题是根本没有验证发生,当我删除以前的注释时,一切正常。

我正在使用 Spring boot 2.0.3 / tomcat dep

这是怎么回事?

the Spring Boot reference documentation 所述,添加 @EnableWebFlux 意味着您想完全控制 WebFlux 配置。在这种情况下,这包括网络验证。

现在有几种方法可以在您的应用程序中自定义资源处理 - 您可以使用各种 spring.resources.* 配置键,或者添加您自己的配置 class 来实现 WebFluxConfigurer 并覆盖addResourceHandlers 方法。

谢谢@M。 Deinum 和@Brian Clozel 这是自定义配置 class 我需要同时使用 thymeleaf 和验证

@Configuration
@EnableWebFlux
public class WebFluxConfig implements WebFluxConfigurer {

    @Resource
    private ThymeleafReactiveViewResolver thymeleafReactiveViewResolver;

    @Autowired
    private Validator defaultValidator;

    @Override
    public Validator getValidator() {
        return defaultValidator;
    }

    @Override
    public void configureViewResolvers(final ViewResolverRegistry registry) {
        registry.viewResolver(thymeleafReactiveViewResolver);
    }

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                .resourceChain(false);
    }
}