Spring - 对其他 2 个项目使用来自外部 jar 的异常处理程序
Spring - Using an exception handler from an external jar for 2 other projects
我有 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 中正确扫描组件。此扫描应在主项目(项目 1 和项目 2)上完成。
因此,在 project-1 & project-2
中,您必须扫描在 jar-name 中找到的包。您可以创建单独的配置文件或在 GlobalExceptionHandler
.
@ControllerAdvice(basePackages = {"jar.package"})
public class GlobalExceptionHandler {...}
在项目中添加@Import(GlobalExceptionHandler.class) 解决了问题,现在可以正确调用处理程序。
I was also facing the same issue what I did is:
Step 1: In GlobalExceptionHandler.java declare controller as base > packages using @ComponenetScan and @ControllerAdvice. Like as below
@ComponentScan(basePackages = "com.xxx.controller")
@ControllerAdvice(basePackages = "com.xxx.controller")
class GlobalExceptionHandler extends ResponseEntityExceptionHandler{}
Step 2: use @Import annotation and import GlobalExceptionHandler class > >in SpringbootMain Application class. Like as below
@SpringBootApplication
@Import(CustomExceptionHandler.class)
public class SpringBootDemoApplication { }
第 3 步:在其他服务项目中将 GlobalExceptionHandler maven 依赖项包含在任何您想要使用它的地方。
我有 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 中正确扫描组件。此扫描应在主项目(项目 1 和项目 2)上完成。
因此,在 project-1 & project-2
中,您必须扫描在 jar-name 中找到的包。您可以创建单独的配置文件或在 GlobalExceptionHandler
.
@ControllerAdvice(basePackages = {"jar.package"})
public class GlobalExceptionHandler {...}
在项目中添加@Import(GlobalExceptionHandler.class) 解决了问题,现在可以正确调用处理程序。
I was also facing the same issue what I did is:
Step 1: In GlobalExceptionHandler.java declare controller as base > packages using @ComponenetScan and @ControllerAdvice. Like as below
@ComponentScan(basePackages = "com.xxx.controller") @ControllerAdvice(basePackages = "com.xxx.controller") class GlobalExceptionHandler extends ResponseEntityExceptionHandler{}
Step 2: use @Import annotation and import GlobalExceptionHandler class > >in SpringbootMain Application class. Like as below @SpringBootApplication @Import(CustomExceptionHandler.class) public class SpringBootDemoApplication { }
第 3 步:在其他服务项目中将 GlobalExceptionHandler maven 依赖项包含在任何您想要使用它的地方。