在 AOP 之前做 java 验证注解 运行
Do java validation annotations run before AOP
我是 Spring Boot AOP 的新手。
在java验证注释(例如@NotNull)之前使用@Before 运行注释的AOP方法是否?
我有一些其他自定义验证需要 运行 每个请求,但我需要 运行 在 java 验证注释后 运行 这些验证 运行.
第一个 运行 是哪个?
我的控制器:
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping(value = "")
public List<User> getAllUsers(@Valid @RequestBody User user) {
return userService.getAllUsers();
}
}
我的建议:
@Aspect
@Component
public class AspectConfig {
@Pointcut(value = "within(@org.springframework.web.bind.annotation.RestController *)")
public void restControllers() {
}
@Before(value = "restControllers()")
public void logRequest(JoinPoint joinPoint) {
...
}
}
Does an AOP method annotated with @Before
run before java validation annotations
不,它会在之后运行,就像您希望的那样。另见 this question。所以你应该准备好了。只有在验证成功时才应触发您的日志记录建议,因为只有这样才会调用目标方法。
如果您希望在验证器启动之前 log/do 在请求级别上执行某些操作,您可以实施 HandlerInterceptor
,请参阅 。
我是 Spring Boot AOP 的新手。
在java验证注释(例如@NotNull)之前使用@Before 运行注释的AOP方法是否?
我有一些其他自定义验证需要 运行 每个请求,但我需要 运行 在 java 验证注释后 运行 这些验证 运行.
第一个 运行 是哪个?
我的控制器:
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping(value = "")
public List<User> getAllUsers(@Valid @RequestBody User user) {
return userService.getAllUsers();
}
}
我的建议:
@Aspect
@Component
public class AspectConfig {
@Pointcut(value = "within(@org.springframework.web.bind.annotation.RestController *)")
public void restControllers() {
}
@Before(value = "restControllers()")
public void logRequest(JoinPoint joinPoint) {
...
}
}
Does an AOP method annotated with
@Before
run before java validation annotations
不,它会在之后运行,就像您希望的那样。另见 this question。所以你应该准备好了。只有在验证成功时才应触发您的日志记录建议,因为只有这样才会调用目标方法。
如果您希望在验证器启动之前 log/do 在请求级别上执行某些操作,您可以实施 HandlerInterceptor
,请参阅