从外部jar使用ControllerAdvice

时间:2019-03-06 03:02:55

标签: spring-boot exception

我正在尝试创建可由多个模块使用的异常处理模块。因此,我创建了具有与异常处理相关的所有逻辑的jar。我正在尝试添加可能会捕获异常并生成错误响应的全局控制器建议。问题是此控制器建议没有被调用。 当我在各个模块中编写此控制器建议的声明时,效果很好。

ExceptionHandling模块     --ExceptionToResponseGenerator 主模块     --RestController 这不起作用

异常处理模块

MainModule     --RestController     --ExceptionToResponseGenerator 可行

我在做什么错了?


package com.abc.cde.exceptionhandler.handler;

@ControllerAdvice
@Log
public class ExceptionToResponseGenerator extends ResponseEntityExceptionHandler {

    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders httpHeaders, HttpStatus httpStatus, WebRequest webRequest) {
        return new ResponseEntity(new ErrorDetails(new Date(), "bad", "bad"), HttpStatus.BAD_REQUEST);
    }

主班

    @Import(IncludeExceptionHandling.class)
   @SpringBootApplication
   public class MainApplication{

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }


}

-----------
IncludeExceptionHandling

@Configuration
@EnableAspectJAutoProxy
public class IncludeExceptionHandling {

    @Bean
    public ExceptionLoggerPointcut notifyAspect() {
        return new ExceptionLoggerPointcut();
    }
}

ExceptionLoggerPointcut是aop包装异常并将其重新抛出

1 个答案:

答案 0 :(得分:1)

似乎问题出在缺少@ComponentScan。请将您的代码的程序包名称和外部jar库名称传递给@ComponentScan批注,以便Spring可以注册组件并将其提供给您的应用。