我正在尝试创建可由多个模块使用的异常处理模块。因此,我创建了具有与异常处理相关的所有逻辑的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包装异常并将其重新抛出
答案 0 :(得分:1)
似乎问题出在缺少@ComponentScan。请将您的代码的程序包名称和外部jar库名称传递给@ComponentScan批注,以便Spring可以注册组件并将其提供给您的应用。