如何在到达端点之前使用 Spring AOP 处理异常
How to handle the exceptions using Spring AOP before reaching the endpoint
我有一个 spring 定义端点的控制器
@RequestMapping(value = "/hello", method = RequestMethod.POST)
@ResponseBody
public Map<String, String> hello() {
.....
}
在我这方面class,我有,
@Around("execution(* org.example.metrics.dropwizard.SampleController.hello(..))")
public Object aroundCallingHello(ProceedingJoinPoint joinPoint) throws Throwable
{
}
比方说,我的端点将一个 java 对象作为参数(POST 调用)保存在数据库中。
来自网页的请求在 JSON 中。如果 JSON 结构与 JAVA POJO 结构不匹配,则会抛出异常。但是我无法在 Aspect class 中捕获该异常(aroundCallingHello 方法不起作用)。如何在 AOP 中捕获此类异常(请求甚至未到达控制器中的端点)。我需要跟踪应用程序中的各种异常。谢谢你。
您应该使用@ControllerAdvice
来实现这些类型的异常处理。你可以找到一个完整的explanation with example here。您可以有一个方法(或多个方法)来处理不同类型的异常(包括您是否有任何自定义异常)。希望这对您有所帮助!
我有一个 spring 定义端点的控制器
@RequestMapping(value = "/hello", method = RequestMethod.POST)
@ResponseBody
public Map<String, String> hello() {
.....
}
在我这方面class,我有,
@Around("execution(* org.example.metrics.dropwizard.SampleController.hello(..))")
public Object aroundCallingHello(ProceedingJoinPoint joinPoint) throws Throwable
{
}
比方说,我的端点将一个 java 对象作为参数(POST 调用)保存在数据库中。 来自网页的请求在 JSON 中。如果 JSON 结构与 JAVA POJO 结构不匹配,则会抛出异常。但是我无法在 Aspect class 中捕获该异常(aroundCallingHello 方法不起作用)。如何在 AOP 中捕获此类异常(请求甚至未到达控制器中的端点)。我需要跟踪应用程序中的各种异常。谢谢你。
您应该使用@ControllerAdvice
来实现这些类型的异常处理。你可以找到一个完整的explanation with example here。您可以有一个方法(或多个方法)来处理不同类型的异常(包括您是否有任何自定义异常)。希望这对您有所帮助!