SpringBoot多模块项目下的包和组件扫描

发布时间:2023年12月24日

问题阐述:为了简化项目代码,我们通常会使用多模块化代码进行开发,但是会出现如下问题:写代码时能够正常扫描或注入其他模块的Service,但是启动类一启动就报错Consider defining a bean of type 'com.xiaoqian.common.service.IArticleService' in your configuration.,意思是要让我们再去注册一个Bean,显然是公共模块下的Bean并没有注册成功。

项目结构示例如下图:
在这里插入图片描述

解决方案:在启动类上添加@ComponentScan注解和@MapperScan注解

@SpringBootApplication
@MapperScan("com.xiaoqian.common.mapper")
@ComponentScan({"com.xiaoqian.blog", "com.xiaoqian.common"})
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

原因解释:主程序使用@SpringBootApplication默认配置是扫描主程序这个类所在的包及其子包下的组件类,当blog模块需要调用公共模块common下的Article或者使用其Service接口时,必须要使用注解@ComponentScan配置组件扫描,如果还集成了MyBatis,还需要使用@MapperScan扫描Mapper接口,因为@ComponentScan默认扫描的是Spring框架下Repository注解的接口。

文章来源:https://blog.csdn.net/xiaoqian7758258/article/details/135182824
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。