当前位置: 首页 > 知识库问答 >
问题:

springboot ComponentScan多模块项目问题

景永春
2023-03-14

我有一个带有myapp-core和myapp-web模块的myapp父pom类型maven项目。myapp-core模块作为依赖项添加到MyApp-Web。

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

主要的application.java也在com.myapp.web包中。由于我的核心模块根包不同,我将ComponentScan的通用基础包“com.myApp”包括在内,如下所示:

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

现在令人惊讶的是,如果我使用run As->spring boot应用程序运行这个应用程序,它的工作很好。但是,如果我以run as->Java应用程序运行它,它就会失败,错误地说它找不到myapp-core模块中定义的bean。

如果我将application.java移动到com.myapp包中,它就可以正常工作。即使我把它作为Java应用程序运行,它也应该能工作,对吧?

共有1个答案

夏和雅
2023-03-14

在为spring启用debug log level并查看了大量日志之后,我发现对各种组件(如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应用程序来运行它。

但仍然不确定它是如何工作的良好时,运行作为->spring boot应用程序!!

无论如何,我认为最好把我的application.java移到com.myapp包中,而不是和springboot打架!

 类似资料:
  • 问题内容: 我有学习的背景和思想。 我喜欢使用的其中一项功能是可以将项目制作为多Maven模块。例? 令人高兴的是,每个模块都可以具有自己的依赖性,并且可以独立测试它们,而不用运行一个整体应用程序。 我们如何实现类似的东西,或者它的生态系统? 问题答案: 你绝对可以做到的。这被称为SBT Multi-Project build。您可以使用以下内容定义一个主项目和多个子项目(来自上面的docs链接)

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

  • 好吧,这是一个有趣的经验,我有一个结构我的maven多模块项目的前几个星期。 当我决定使用maven进行构建生命周期管理时,我有两个理由希望选择maven。 a.大多数开发团队都是被划分的,这样每个团队就可以在项目中的单独模块上工作,比如团队-A工作在用户管理系统上,团队-B工作在授权系统上,团队-C工作在文档管理系统上……等等。每个团队都有java开发人员、测试人员、UI专家等。 因此我得出结论

  • 关于maven项目结构,我有两个问题: 1)我正在创建一个maven多模块项目,并且想知道是否可以将模块的所有公共依赖项放在父POM中?这是正确的做法吗? 2)如果我正在创建一个包含所有web.xml和JSP文件的maven webapp项目,那么web控制器、侦听器和模型对象应该驻留在哪里?在一个单独的maven jar项目中还是在同一个webapp项目中?

  • 我最近开始学习java处理器,并尝试将它们与gradle一起使用,当我构建项目时,我可以看到注释处理器JAR(其他模块)被打印出来(我在app gradle文件中添加了这一点,您可以在下面看到),但没有执行。我不知道我做错了什么...

  • 我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下: 现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两