Estou tentando adicionar o Bean Validation na minha aplicação, mas, ele não funciona.
Controller:
@PostMapping
public ResponseEntity<TopicoResponseDto> cadastrar(@Valid @RequestBody final TopicoRequestDto topicoRequestDto, UriComponentsBuilder uBuilder) {
Topico topico = topicoRequestDto.converterParaTopico(cursoRepository);
topicoRepository.save(topico);
URI uri = uBuilder.path("/topicos/{id}").buildAndExpand(topico.getId()).toUri();
TopicoResponseDto topicoResponseDto = new TopicoResponseDto(topico);
return ResponseEntity.created(uri).body(topicoResponseDto);
}
DTO:
package com.alura.forum.dto.request;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.alura.forum.model.Curso;
import com.alura.forum.model.Topico;
import com.alura.forum.repository.CursoRepository;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class TopicoRequestDto {
@NotNull
@NotEmpty
@Size(min = 3)
private String titulo;
@NotNull
@NotEmpty
@Size(min = 5)
private String mensagem;
@NotNull
@NotEmpty
private String nomeCurso;
public Topico converterParaTopico(CursoRepository cursoRepository) {
Curso curso = cursoRepository.findByNome(nomeCurso);
return new Topico(titulo, mensagem, curso);
}
}
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
POSTMAN
Ele não deveria armazenar no banco.
Testes que eu realizei para tentar arrumar, mas, sem sucesso:
- mvn clean install
- mvn idea:idea
- mvn dependency:tree
- deletar o target e gerar novamente
- adicionar outras dependências além da spring boot starter validation