在使用Spring Boot和Maven将项目模块化为不同的独立Maven项目时,我们遇到了一个问题,即多模块Maven项目中的bean自动装配无法正常工作。
为了给您一个概述,下面是到目前为止开发的独立Maven项目
下面是依赖关系结构RewardsApp-> Rewards-> DBservices1-> Coreservices
问题是@AutowiredRewards中使用的注释和DBservices1来获取带有@Service/ 注释的映射服务@Repository在RewardsAppProject 中不可用。
@Autowired
@Service
@Repository
RewardsApp
作为一种变通方法,我们在配置的豆类RewardsApp有@Bean注释,那么服务提供给服务器成功启动。使用这种方法,我们需要手动配置RewardsApp相关项目中使用的所有bean 。我们的应用程序中有很多服务和存储库,我们认为像这样创建bean并不是一种正确的方法,因为需要创建许多bean。
@Bean
请注意,我们已经在软件包下的所有项目中创建了所有的Spring Boot控制器,服务,存储库 com.company.application
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"})
我猜上面是针对服务,实体(域),存储库的