java–SpringBoot ComponentScan与多模块项目有关

java–SpringBoot ComponentScan与多模块项目有关,第1张

概述我有一个myapp父pom类型maven项目与myapp-core和myapp-web模块. myapp-core模块作为依赖项添加到myapp-web.myapp-core模块中的所有类都位于root包com.myapp.core中,myapp-web模块中的所有类都位于root包com.myapp.web中主要的Application.java也在com

我有一个myapp父pom类型maven项目与myapp-core和myapp-web模块. myapp-core模块作为依赖项添加到myapp-web.

myapp-core模块中的所有类都位于root包com.myapp.core中,myapp-web模块中的所有类都位于root包com.myapp.web中

主要的Application.java也在com.myapp.web包中.由于我的核心模块根包不同,我包括ComponentScan的公共基本包“com.myapp”,如下所示:

@Configuration@ComponentScan(basePackages="com.myapp")@EnableautoConfigurationpublic class Application {    public static voID main(String[] args) {        SpringApplication.run(Application.class,args);    }   }

现在令人惊讶的是,如果我使用Run As运行此应用程序 – > Spring Boot App它工作正常.但如果我将其作为Run As运行 – > Java应用程序失败,错误地说它找不到myapp-core模块中定义的bean.

如果我将我的Application.java移动到com.myapp包,它工作正常.
它应该工作,即使我也将其作为Java应用程序运行,对吧?最佳答案在为spring启用调试日志级别并浏览大量日志之后,我发现扫描各种组件(如JPA存储库,JPA实体等)取决于Application.java的软件包名称.

如果JPA存储库或实体不在Application.java包的子包中,那么我们需要明确指定它们,如下所示:

@Configuration@ComponentScan(basePackages="com.sivalabs.jcart")@EnableautoConfiguration@EnableJpaRepositorIEs(basePackages="com.sivalabs.jcart")@EntityScan(basePackages="com.sivalabs.jcart")public class Application{    public static voID main(String[] args) {        SpringApplication.run(Application.class,args);    }}

使用上面的附加@EnableJpaRepositorIEs,@ EntityScan我可以使用Run As运行它 – > Java应用程序.

但仍不确定Run As时的工作正常 – > Spring Boot App !!

无论如何,我认为最好将我的Application.java移动到com.myapp包而不是与SpringBoot打架!

总结

以上是内存溢出为你收集整理的java – SpringBoot ComponentScan与多模块项目有关全部内容,希望文章能够帮你解决java – SpringBoot ComponentScan与多模块项目有关所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存