ANÚNCIO

~/questoes/programacao

O que faz a anotação @Valid em parâmetros de um controlador Spring Boot?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

Validação de dados com @Valid no Spring Boot

Conceito central

A anotação @Valid em parâmetros de controlador instrui o Spring Boot a validar os dados recebidos na requisição conforme as regras definidas na entidade (como @NotNull, @Email, @Size). Se os dados não atenderem às regras, a requisição é rejeitada antes mesmo de chegar à lógica de negócio.

Por que essa resposta faz sentido

A alternativa A está correta porque @Valid ativa a validação dos dados de entrada conforme anotações presentes na entidade. É parte essencial de um CRUD robusto: impede que dados inválidos sejam persistidos no banco de dados e garante consistência nos dados armazenados.

Armadilhas comuns

  • Confundir @Valid com autenticação ou verificação de segurança — @Valid valida apenas dados estruturais, não identidade do usuário
  • Usar @Valid sem definir as anotações de validação na entidade (como @NotNull, @Email) — ambas são necessárias para funcionar
  • Esquecer de adicionar o BindingResult ou ExceptionHandler para capturar e tratar erros de validação — sem isso, exceções genéricas aparecem ao usuário

Entenda as alternativas

A

Correto. @Valid funciona em conjunto com anotações de validação (@NotNull, @Email, @Size, @Min, @Max, etc.) para garantir que os dados recebidos na requisição estejam em conformidade antes de serem processados pelo controlador.

B

Incorreto. @Valid não valida portas do servidor. Essa validação é feita em application.properties ou application.yml através da propriedade server.port. @Valid é especificamente para validar dados do corpo da requisição.

C

Incorreto. Verificação de JWT é responsabilidade de filtros de autenticação e segurança (como Spring Security), não de @Valid. @Valid não tem qualquer relação com tokens ou autenticação.

D

Incorreto. Autenticação é tratada por mecanismos de segurança do Spring (Security, filtros, interceptadores), não por @Valid. @Valid cuida apenas da validação de dados estruturais da requisição.

Dica prática: Sempre coloque @Valid na assinatura do método do controlador quando receber um objeto do corpo da requisição (por exemplo, @PostMapping public ResponseEntity criar(@Valid @RequestBody Usuario usuario)). Depois, use um ControllerAdvice ou BindingResult para capturar e retornar mensagens amigáveis quando a validação falhar. Isso garante uma API profissional que rejeita dados inválidos de forma clara.

Revise pensando: Se você remover a anotação @Valid de um método POST, o que aconteceria com dados inválidos enviados pela requisição?