在Maven多模块项目中无法正常运行bean的Spring Boot自动装配

在使用Spring

Boot和Maven将项目模块化为不同的独立Maven项目时,我们遇到了一个问题,即多模块Maven项目中的bean自动装配无法正常工作。

为了给您一个概述,下面是到目前为止开发的独立Maven项目

  1. Coreservices –包含整个应用程序的spring boot domain对象:输出JAR
  2. DBservices1-包含用于启动数据库的Spring Boot存储库和服务(数据库服务):输出JAR
  3. Rewards-包含与Rewards模块相关的文件(控制器,服务(业务逻辑服务),视图):输出JAR
  4. RewardsApp-独立的可部署Maven项目:输出WAR

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

问题是@AutowiredRewards中使用的注释和DBservices1来获取带有@Service/

注释的映射服务@RepositoryRewardsAppProject 中不可用。

作为一种变通方法,我们在配置的豆类RewardsApp@Bean注释,那么服务提供给服务器成功启动。使用这种方法,我们需要手动配置RewardsApp相关项目中使用的所有bean

。我们的应用程序中有很多服务和存储库,我们认为像这样创建bean并不是一种正确的方法,因为需要创建许多bean。

请注意,我们已经在软件包下的所有项目中创建了所有的Spring Boot控制器,服务,存储库 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中添加以下注释对我有用,现在自动装配正在罐中的类工作

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

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

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

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

以上是 在Maven多模块项目中无法正常运行bean的Spring Boot自动装配 的全部内容, 来源链接: utcz.com/qa/431527.html

回到顶部