在基于MQ的Spring Boot应用程序中通过Spring建议进行全局异常处理

时间:2018-03-20 07:15:14

标签: spring spring-boot exception-handling spring-aop

我有一个MQ Spring Boot PaaS应用程序,我需要通过一个公共异常处理程序类(GlobalExceptionHandler)来实现异常处理。我的PaaS应用程序从源队列接收消息,通过spring jpa执行一些数据库操作,并将响应写回目标队列。

我需要通过GlobalExceptionHandler类处理所有数据库RuntimeException,自定义业务异常和其他已检查异常。

我的GlobalExceptionHandler将为每个异常定义处理程序(方法)。在我的处理程序中,我将首先记录异常,然后我将创建[错误代码,desc],然后我需要将其返回到主流程。

我的申请表中没有任何控制器。所以我想,我不能使用@ControllerAdvice。目前我正在使用spring AOP @AfterThrowing,但是我无法从处理程序返回[code,desc]。

@AfterThrowing(pointcut = "execution(* com.abc.xyz.service..*(..)) ", 
throwing = "dataNotFoundException")
    public void handleDataNotFoundException(DataNotFoundException dataNotFoundException) {
       LOGGER.info("Info : " + dataNotFoundException.getMessage());
       // code, desc need to create here and send it back to calling place.
       // I need to change the return type here from void.
    }

任何人都可以指导我在这里实施异常处理。

1 个答案:

答案 0 :(得分:0)

正如我解释here@AfterThrowing无法修改返回值或以其他方式更改应用程序的执行流程。你甚至无法在那里发现异常。您需要使用@Around建议。

我建议您先阅读一些文档,然后再提出更多的后续问题。