Module bus.starter

Class AspectjValidateProxy

java.lang.Object
org.miaixz.bus.starter.validate.AspectjValidateProxy

@Order(99) public class AspectjValidateProxy extends Object
AOP验证代理切面类,用于对控制器方法参数进行自动验证。

该类使用Spring AOP技术,在控制器方法执行前对带有验证注解的参数进行验证, 如果验证失败则抛出异常,阻止方法继续执行。

该切面匹配以下类型的方法:

  • 带有Spring Web注解的方法:@RequestMapping、@GetMapping、@PostMapping等
  • 带有@CrossOrigin注解的方法
  • 带有@Valid注解参数的方法

使用示例:

 @RestController
 @RequestMapping("/user")
 public class UserController {

     @PostMapping("/register")
     public UserDTO register(@Valid UserRegisterDTO userDTO) {
         // 如果userDTO验证失败,方法不会执行,直接抛出异常
         return userService.register(userDTO);
     }
 }
 

在上述示例中,当调用/user/register接口时,AspectjValidateProxy会自动对 userDTO参数进行验证,如果验证失败则抛出异常,方法不会执行。

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • AspectjValidateProxy

      public AspectjValidateProxy()
  • Method Details

    • match

      public void match()
      定义切点,匹配所有带有Spring Web注解的方法或带有@Valid注解参数的方法。

      切点表达式匹配以下注解或方法:

      • @RequestMapping
      • @PutMapping
      • @PostMapping
      • @PatchMapping
      • @ModelAttribute
      • @GetMapping
      • @DeleteMapping
      • @CrossOrigin
      • 带有@Valid注解参数的方法
    • around

      public Object around(org.aspectj.lang.ProceedingJoinPoint point) throws Throwable
      环绕通知,在匹配的方法执行前后进行验证处理。

      该方法在目标方法执行前,调用AutoValidateAdvice对方法参数进行验证, 验证通过后继续执行目标方法,验证失败则抛出异常。

      Parameters:
      point - 切点,包含目标方法的信息
      Returns:
      目标方法的执行结果
      Throws:
      Throwable - 如果验证失败或目标方法执行抛出异常