En el marco de Spring, @Valid
las anotaciones son una herramienta poderosa para verificar y verificar los datos ingresados por los usuarios para garantizar la legalidad e integridad de los datos. Al combinarse con otras anotaciones y validadores, @Valid
las anotaciones pueden implementar fácilmente la validación de datos, mejorando así la solidez y seguridad de la aplicación. Este artículo detallará las anotaciones en Spring @Valid
y cómo usarlas correctamente en su aplicación.
¿ Qué son @Valid
las anotaciones?
@Valid
La anotación es una anotación en el marco Spring, que se utiliza para marcar el objetivo de la validación de datos en los parámetros del método o los valores de retorno del método. Le dice a Spring que realice la validación de datos al procesar llamadas a métodos. Esta anotación generalmente se usa en combinación con otras anotaciones relacionadas con la validación , como @NotNull
, @NotBlank
, etc., para especificar reglas de validación.@Min
@Max
Validación de parámetros de método mediante @Valid
anotaciones.
Al utilizar anotaciones en los parámetros del método @Valid
, los parámetros se pueden validar antes de la invocación del método. Esto es útil para garantizar la validez de los datos de entrada.
A continuación se muestra un ejemplo que muestra cómo usar @Valid
anotaciones para la validación de parámetros en los métodos del controlador Spring:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@PostMapping("/register")
public ResponseEntity<String> registerUser(@Valid @RequestBody UserDto userDto) {
// 处理用户注册逻辑
return ResponseEntity.ok("User registered successfully");
}
}
En el ejemplo anterior, @Valid
la anotación se utiliza userDto
en el parámetro. Spring validará las propiedades del parámetro registerUser
antes de llamar al método .userDto
Combinado con otras anotaciones de validación.
Normalmente, @Valid
las anotaciones se utilizan junto con otras anotaciones relacionadas con la validación para definir reglas de validación. Por ejemplo, puede utilizar anotaciones como @NotNull
, @NotBlank
, @Min
, @Max
etc. para realizar una validación más específica de los atributos.
public class UserDto {
@NotNull
@NotBlank
private String username;
@NotNull
@Min(18)
private Integer age;
// ...其他属性和方法
}
En el ejemplo anterior, username
el atributo está anotado con @NotNull
y @NotBlank
, lo que indica que no puede estar vacío y no puede contener solo espacios. age
El atributo está anotado con @NotNull
y @Min(18)
, lo que indica que no puede estar vacío y debe ser mayor o igual a 18.
En el marco de Spring, puede utilizar varias anotaciones de validación para definir diferentes tipos de reglas de validación. Estas anotaciones se encuentran javax.validation.constraints
debajo del paquete y se utilizan para validar diferentes aspectos de los datos. Las siguientes son algunas anotaciones de validación comunes y sus correspondientes reglas de validación:
-
@NotNull
: El campo de validación no puede sernull
. -
@NotBlank
: la cadena de verificación no puede estar vacía y contiene al menos un carácter no nulo. -
@NotEmpty
: A diferencia de Validar que una cadena, colección o matriz no puede estar vacía,@NotBlank
no requiere al menos un carácter que no sea nulo. -
@Min(value)
: El número de validación debe ser mayor o igual al mínimo especificado. -
@Max(value)
: El número de validación debe ser menor o igual al valor máximo especificado. -
@Size(max, min)
: valida que el tamaño de una cadena, colección o matriz debe estar dentro del rango especificado. -
@Email
: Verifique que la cadena sea una dirección de correo electrónico válida. -
@Pattern(regexp)
: Verifique que la cadena coincida con la expresión regular especificada. -
@Digits(integer, fraction)
: Valida que un número cumpla con la cantidad especificada de dígitos, incluidas partes enteras y fraccionarias. -
@Positive
: El número de validación debe ser positivo. -
@Negative
: El número de validación debe ser negativo. -
@Past
: La fecha de validación debe ser anterior. -
@Future
: La fecha de validación debe ser futura. -
@AssertTrue
: El campo de validación debe sertrue
. -
@AssertFalse
: El campo de validación debe serfalse
. -
@CreditCardNumber
: Verifique que la cadena sea un número de tarjeta de crédito válido. -
@URL
: Verifique si la cadena es una URL válida. -
@Valid
: Se utiliza para marcar objetos que requieren validación anidada.
Estas son solo algunas anotaciones de validación comunes; de hecho, hay muchas más anotaciones de validación disponibles en Spring. Puede elegir anotaciones de validación apropiadas para definir reglas de validación de datos basadas en necesidades comerciales específicas. Además, también puede implementar una lógica de validación más compleja mediante validadores personalizados para cumplir con requisitos de validación específicos.
validador personalizado
Además de utilizar anotaciones de validación predefinidas, también puede crear validadores personalizados para satisfacer necesidades de validación específicas. Para crear un validador personalizado, implemente javax.validation.ConstraintValidator
la interfaz.
A continuación se muestra un ejemplo que muestra cómo crear un validador personalizado:
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class AgeConstraintValidator implements ConstraintValidator<AgeConstraint, Integer> {
@Override
public boolean isValid(Integer age, ConstraintValidatorContext context) {
return age != null && age >= 18;
}
}
Luego, puedes usar este validador en anotaciones personalizadas:
import javax.validation.Constraint;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Target({
FIELD, METHOD, PARAMETER})
@Retention(RUNTIME)
@Constraint(validatedBy = AgeConstraintValidator.class)
public @interface AgeConstraint {
String message() default "Invalid age";
Class<?>[] groups() default {
};
Class<? extends Payload>[] payload() default {
};
}
Finalmente, aplique esta anotación personalizada a las propiedades que deben validarse:
public class UserDto {
@NotNull
@NotBlank
private String username;
@AgeConstraint
private Integer age;
// ...其他属性和方法
}
Resumir
@Valid
Las anotaciones son una herramienta importante en el marco Spring para la validación y verificación de datos. Combinado con otras anotaciones de validación y validadores personalizados, puede
Valide fácilmente los datos ingresados por el usuario, mejorando la estabilidad y seguridad de la aplicación. Al agregar anotaciones a los parámetros del método o a los valores de retorno del método @Valid
, puede garantizar la validez de los datos y generar los mensajes de error correspondientes cuando los datos no son válidos, proporcionando así una mejor experiencia de usuario e integridad de los datos.