java – 扫描所有bean,就像它们在Spring中的当前包中一样?

我有一个Spring Boot父项目,我将其作为客户特定扩展项目的依赖项.最初,为了确保其他所有内容都正常工作,我将客户项目的基础包设置为与父项目相同,一切都按预期工作.一旦我将Application类添加到子包中,我开始获得有关缺少bean和组件的异常.

例如,父项目具有基础包com.example.parent,而客户项目具有基础包com.example.parent.customerA.起初,没有任何父bean被拾取,所以我添加了@ComponentScan(“com.example.parent”).然后我得到了一个关于缺少存储库bean的异常,所以我添加了@EnableJpaRepositories(“com.example.parent”).然后我得到一个关于缺少实体的例外,所以我添加了@EntityScan(“com.example.parent”),现在它就像客户项目与父项目具有相同的包时一样运行.

是否有更简洁的方法来加载所有父项目的bean和组件?我宁愿有办法配置客户项目,以便加载父项目中的所有内容,就像客户项目具有相同的基础包一样.我担心如果我必须为jpa repos和实体添加这些特定的注释,我可能没有覆盖所有可能在将来添加的其他Spring对象的基础.

最佳答案
更清洁的方法是亚历克斯提到的.但是,如果您确实需要将Spring启动应用程序驻留在子包中,则可以在@SpringBootApplication中定义基本包,如下所示.

package com.example.parent.customer


@SpringBootApplication(scanBasePackages={"com.example.parent"})
public class SpringBootApp {
//main method
}

通过这种方式,不同的项目可以共享公共spring bean,并在其子包中包含特定组件.

转载注明原文:java – 扫描所有bean,就像它们在Spring中的当前包中一样? - 代码日志