1

我有 2 个项目具有相同的异常并使用相同的异常处理程序。所以所有的异常和异常处理程序都被移到了一个外部模块。

异常导入得很好,但似乎没有调用异常处理程序。据我了解,如果我有 @ComponentScan 注释,则应该从外部 jar 调用处理程序。

这是我的异常处理程序的样子:

@ComponentScan(basePackages = {"com.*first-project*.controller",
        "com.*second-project*.controller"})
@ControllerAdvice(basePackages = {"com.*first-project*.controller",
        "com.*second-project*.controller"})
public class GlobalExceptionHandler {

...

}

当异常处理程序单独作为每个项目的一部分时,它工作得很好。然后它在@ControllerAdvice 注释中只有该项目的路径,并且没有@ComponentScan。

带有异常处理程序的外部 jar 当前通过以下方式导入:

compile files('libs/*jar-name*.jar')
4

3 回答 3

2

在项目中添加 @Import(GlobalExceptionHandler.class) 解决了该问题,并且现在可以正确调用处理程序。

于 2020-10-22T21:43:52.563 回答
0

您应该正确扫描来自主项目和扩展 jar 的组件。此扫描应在主项目(项目 1 和项目 2)上完成。

因此,在 中project-1 & project-2,您必须扫描在jar-name中找到的包。您可以创建一个单独的配置文件或在您的GlobalExceptionHandler.

@ControllerAdvice(basePackages = {"jar.package"})
public class GlobalExceptionHandler {...}
于 2020-10-22T18:43:25.883 回答
0

我也面临同样的问题,我所做的是:

第 1 步:在 GlobalExceptionHandler.java 中,使用 @ComponenetScan 和 @ControllerAdvice 将控制器声明为基础 > 包。如下所示

@ComponentScan(basePackages = "com.xxx.controller") @ControllerAdvice(basePackages = "com.xxx.controller") 类 GlobalExceptionHandler 扩展 ResponseEntityExceptionHandler{}

第二步:使用@Import注解,在SpringbootMainApplication类中导入GlobalExceptionHandler类。如下所示 @SpringBootApplication @Import(CustomExceptionHandler.class) public class SpringBootDemoApplication { }

第 3 步:将 GlobalExceptionHandler maven 依赖项包含在您想使用的其他服务项目中。


于 2022-01-10T10:53:34.777 回答