使用外部 jar 中的 ControllerAdvice

问题描述 投票:0回答:2

我正在尝试创建可由多个模块使用的异常处理模块。所以我创建了包含与处理异常相关的所有逻辑的 jar。我正在尝试添加全局控制器建议,它可以捕获异常并生成错误响应。问题是该控制器建议没有被调用。 当我在各个模块中声明此控制器建议时,它工作得很好。

异常处理模块 --异常响应生成器 主模块 --休息控制器 这不行

异常处理模块

主模块 --休息控制器 --异常响应生成器 这有效

我做错了什么?


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 包装异常并重新抛出它

spring-boot exception
2个回答
3
投票

问题似乎在于缺少@ComponentScan。请将代码的包名和外部jar库名传递给@ComponentScan注解,以便Spring可以注册组件并使其可供您的App使用。


0
投票

我最近使用 JAR 实现了 ControllerAdvice 来处理客户异常。单独的 SpringBoot 应用程序中的 ControllerAdvice 和 REST API 的单独逻辑。

我添加了 Maven 依赖项,如下 -

  <dependency>
            <groupId>com.controlleradvice</groupId>
            <artifactId>ControllerAdviceJar</artifactId>
            <version>1.1</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/ControllerAdviceJar-1.1.jar</systemPath>
  </dependency>

另外,正如上面提到的,我漏掉了我的 SpringBoot @ComponentScan 的 JAR 包。

如果有帮助请点赞。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.