使用noargsconstructor时javax.validation不起作用

使用noargsconstructor时javax.validation不起作用,java,validation,lombok,Java,Validation,Lombok,我正在尝试验证一个请求对象,其类如下: @Value @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) @AllArgsConstructor public class SomeCreateRequest { @NotNull(message = "Name can not be null") @NotBlank(message = "Name can not be empt

我正在尝试验证一个请求对象,其类如下:

@Value
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
@AllArgsConstructor
public class SomeCreateRequest {
    @NotNull(message = "Name can not be null")
    @NotBlank(message = "Name can not be empty")
    String name;
}
如果没有NoArgsConstructor,验证工作正常,但后期操作失败,出现HttpMessageEndableException;使用NoArgsConstructor,后期操作成功,但验证不起作用

我做错了什么

另外,使用Java 8、Spring 2.3.4.RELEASE、javax.validation 2.0.1.Final和我的控制器如下所示:

@RequiredArgsConstructor
@RestController
@RequestMapping("/api")
public class MyController {

    private final MyService myService;

    @PostMapping()
    public MyResponse submit(@Valid @RequestBody SomeCreateRequest request){
        return myService.create(request);
    }
}

您是否在控制器中使用
@Valid
?注意
@noargsconstuctor(force=true,access=AccessLevel.PRIVATE)
,因为Jackson反序列化器需要一个no-args构造函数,你能举一个你正在使用的控制器注释的例子吗?是的,我在我的控制器中使用@Valid。请参阅我对这个问题的编辑。该对象需要一个无参数构造函数来创建,或者需要一个JSON元数据来知道调用哪个构造函数。验证不起作用的事实可能是由于您添加了
javax.validation
作为依赖项,而您应该使用
spring boot starter验证
。后者包括API和实现,只添加API没有任何作用。