Spring-使用来自外部jar的异常处理程序处理其他2个项目

问题描述

我有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')

解决方法

您应该从主项目和扩展jar中正确扫描组件。此扫描应在主项目(project-1和project-2)上进行。

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

@ControllerAdvice(basePackages = {"jar.package"})
public class GlobalExceptionHandler {...}
,

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...