从异常生成的位置找到 class。不使用堆栈跟踪并以 AOP 方式使用 @ControllerAdvice
Find the class from where the exception has generated. without using stacktrace and with @ControllerAdvice in AOP way
我正在我的应用程序中集中处理异常。但我希望消息国际化并且应该保存在属性文件中。为此,我计划保留带有附加 .message 的控制器完全限定名称的密钥。所以我标记为 class 的 @ControllerAdvice 将处理异常并根据 "fully qualified name of exception.ControllerName" 从属性文件中获取消息,问题是我没有从发生异常的地方获取控制器名称和方法签名.有办法吗??
据我所知,没有直接的方法可以实现这一点。
所以您需要 Around
对您的 @ExceptionHandler
注释方法的建议,例如下面
@Aspect
public class ExceptionLogging {
@Around(execution("@annotation(ExceptionHandler)"))
public Object logException(ProceddingJoinPoint pjp){
String name = pjp.getSignature().getName(); // tweak this as per your requirement
logger.info("Controller where Exception was raised - " + name);
Object obj = pjp.proceed();
return obj;
}
}
我正在我的应用程序中集中处理异常。但我希望消息国际化并且应该保存在属性文件中。为此,我计划保留带有附加 .message 的控制器完全限定名称的密钥。所以我标记为 class 的 @ControllerAdvice 将处理异常并根据 "fully qualified name of exception.ControllerName" 从属性文件中获取消息,问题是我没有从发生异常的地方获取控制器名称和方法签名.有办法吗??
据我所知,没有直接的方法可以实现这一点。
所以您需要 Around
对您的 @ExceptionHandler
注释方法的建议,例如下面
@Aspect
public class ExceptionLogging {
@Around(execution("@annotation(ExceptionHandler)"))
public Object logException(ProceddingJoinPoint pjp){
String name = pjp.getSignature().getName(); // tweak this as per your requirement
logger.info("Controller where Exception was raised - " + name);
Object obj = pjp.proceed();
return obj;
}
}