目前,我有很多用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})
,这很繁琐且容易出错。是否可以在组件扫描过程中包含此文件?
答案 0 :(得分:1)
您可以通过以下方式设置每个程序类:
@SpringBootApplication(scanBasePackages = {"root.serviceA", "root.common"})
参考