Spring-为另外两个项目使用来自外部jar的异常处理程序



我有两个项目有相同的异常,并使用相同的异常处理程序。因此,所有的异常和异常处理程序都被移到了一个外部模块中。

异常导入得很好,但似乎没有调用异常处理程序。据我所知,如果我有@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')

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

您应该正确地扫描主项目和扩展jar中的组件。这种扫描应该在主要项目(项目1和项目2(上进行。

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

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

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

步骤1:在GlobalExceptionHandler.java中,将控制器声明为基>使用@ComponenetScan和@ControllerAdvice的程序包。如下

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

步骤2:使用@Import annotation并导入GlobalExceptionHandler类>gt;在SpringbootMain应用程序类中。如下所示@SpringBootApplication@导入(CustomExceptionHandler.class(公共类SpringBootDemoApplication{}

步骤3:在其他服务项目中包含GlobalExceptionHandler maven依赖项,无论您想在哪里使用它。


最新更新