Не работает @Valid в контроллере для DTO
при отправке невалидного запроса на http://localhost:8080/student не срабатывает аннотация и невалидные данные проходят дальше в контроллер, сервис и т.д.
@RestController
@RequestMapping("/student")
public class StudentController{
private final StudentService service;
@Autowired
public StudentController(StudentService service) {
this.service = service;
}
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<StudentDTO> doPost(@RequestBody @Valid StudentDTO studentDTO) {
try {
StudentDTO studentDTOOut = service.saveNewStudent(studentDTO);
return new ResponseEntity<>( studentDTOOut, HttpStatus.OK);
}
catch (SQLException e) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} catch (RuntimeException e) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
DTO
public class StudentDTO {
@NotNull
private UUID id;
@NotBlank
private String surname;
//getters,setters
}
pom.xml
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.0.9</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.1.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.7.Final</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.0</version>
пробовала ставить @Validated над классом контроллера, добавлять @JsonProperty(required = true) над полями ДТО. Удалять produces = MediaType.APPLICATION_JSON_VALUE.
Не работает никак.
есть еще подозрение: аннотации @Validated и @Validat должны работать без spring boot? (переход на спринг бут не предлагать)