在Maven多模块项目中无法正常运行bean的Spring Boot自动装配
在使用Spring
Boot和Maven将项目模块化为不同的独立Maven项目时,我们遇到了一个问题,即多模块Maven项目中的bean自动装配无法正常工作。
为了给您一个概述,下面是到目前为止开发的独立Maven项目
- Coreservices –包含整个应用程序的spring boot domain对象:输出JAR
- DBservices1-包含用于启动数据库的Spring Boot存储库和服务(数据库服务):输出JAR
- Rewards-包含与Rewards模块相关的文件(控制器,服务(业务逻辑服务),视图):输出JAR
- RewardsApp-独立的可部署Maven项目:输出WAR
下面是依赖关系结构RewardsApp-> Rewards-> DBservices1-> Coreservices
问题是@Autowired
Rewards中使用的注释和DBservices1来获取带有@Service
/
注释的映射服务@Repository
在RewardsApp
Project 中不可用。
作为一种变通方法,我们在配置的豆类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