如何在Spring Boot中对同级包进行组件扫描

时间:2019-01-07 03:19:08

标签: java spring spring-boot spring-mvc

目前,我有很多用Spring Boot 2.1.3(在mono-repo中)编写的服务,并且我有一个用于大多数服务的通用软件包。

所以我的包裹组织如下:

root
root.common
root.serviceA
root.serviceA.<subpackages>
root.serviceB
root.serviceB.<subpackages>
...
root.serviceX
root.serviceX.<subpackages>

在每项服务中,我都有Program.java,上面用@SpringBootApplication标记(例如root/serviceA/Program.java)

我现在遇到的问题是我在root.common中有一个组件(例如root/common/JSONSerializer.java),该组件需要在所有服务中加载。我尝试用@JsonComponent标记文件,但是显然它不起作用,因为它在root.service*包之外。

我设法通过在主文件中手动添加@Import标签来使其正常工作,但这意味着对于每项服务,我都必须手动添加@Import({root.common.JSONSerializer.class}),这很繁琐且容易出错。是否可以在组件扫描过程中包含此文件?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式设置每个程序类:

 @SpringBootApplication(scanBasePackages = {"root.serviceA", "root.common"})

参考

SpringBootApplication documentation