我是 Spring Boot AOP 的新手。
用@Before 注釋的AOP 方法是否在java 驗證注釋(例如@NotNull)之前運行?
我還有一些其他自定義驗證需要為每個請求運行,但我需要在 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) {
...
}
}
uj5u.com熱心網友回復:
@Before在 java 驗證注釋之前用run注釋的 AOP 方法是否
不,它會在之后運行,就像您希望的那樣。另請參閱此問題。所以你應該準備好了。只有在驗證成功時才會觸發您的日志記錄建議,因為只有這樣才會呼叫目標方法。
HandlerInterceptor如果您希望在驗證器啟動之前在請求級別記錄/執行某些操作,您可以實作 a ,請參見此處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401978.html
標籤:春天 弹簧靴 验证 spring-aop
