gpt4 book ai didi

java - bean的Spring Boot Autowiring 在maven多模块项目中不起作用

转载 作者:行者123 更新时间:2023-12-04 10:48:04 25 4
gpt4 key购买 nike

在使用 spring boot 和 maven 将我们的项目模块化为不同的独立 maven 项目时,我们遇到了一个问题,即在多模块 maven 项目中 Autowiring bean 不起作用。

只是为了给你一个问题的概述,下面是迄今为止开发的独立maven项目

  • Coreservices – 包含整个应用程序的 Spring Boot 域对象:输出 JAR
  • DBservices1-包含用于访问数据库的 Spring Boot 存储库和服务(数据库服务):输出 JAR
  • Rewards - 包含 Rewards 模块相关文件( Controller 、服务(业务逻辑服务)、 View ):输出 JAR
  • RewardsApp- 独立可部署的 maven 项目:输出 WAR

  • 下面是依赖结构
    RewardsApp-> Rewards -> DBservices1 -> Coreservices

    问题是 @Autowired Rewards 和 DBservices1 中使用的注解来获取带有 @Service 注解的映射服务/ @RepositoryRewardsApp 中不可用项目。

    作为一种解决方法,我们在 RewardsApp 中配置了 bean。与 @Bean注解,则服务可用于服务器启动成功。
    使用这种方法,我们需要手动配置 RewardsApp 中的所有 bean。在依赖项目中使用。
    我们的应用程序中有许多服务和存储库,我们认为像这样创建 bean 不是正确的方法,因为需要创建许多 bean。

    请注意,我们已经在所有项目中创建了所有 Spring Boot Controller 、服务和存储库
    com.company.application
    下面是主类的片段:
    @SpringBootApplication
    @ComponentScan(basePackages = {"com.company.application"})
    public class RewardsApp extends SpringBootServletInitializer {

    public static void main(String[] args) {
    SpringApplication.run(RewardsApp.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(RewardsApp.class);
    }
    }

    /**
    *Manual beans in RewardsApp
    **/
    @Bean
    public SomeService someService()
    {
    return new SomeService();
    }

    最佳答案

    通过在 RewardsApp.java 中添加下面的注释为我做了诀窍,现在 Autowiring 适用于 jar 内的类

    @ComponentScan(basePackages = {"com.company"})
    @EntityScan(basePackages = {"com.company"})
    @EnableJpaRepositories(basePackages = {"com.company"})

    我猜上面是针对服务、实体(域)、存储库的

    关于java - bean的Spring Boot Autowiring 在maven多模块项目中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46732402/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com