从异常生成的位置找到 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;
  }

}