目录

一、报错信息如下:

二、工程结构如下

三、解决方法

四、@MapperScan

1. 核心作用

2. 与 @Mapper 的区别

3. 底层原理


一、报错信息如下:

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2025-06-27T01:51:50.826+08:00 ERROR 42260 --- [campus-management-v1] [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'classInfoController': Unsatisfied dependency expressed through field 'classInfoService': Error creating bean with name 'classInfoServiceImpl': Unsatisfied dependency expressed through field 'baseMapper': No qualifying bean of type 'com.zyj.campusmanagementv1.mapper.ClassInfoMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}


二、工程结构如下

三、解决方法

在启动类加入这个注释@MapperScan之后成功启动,多次忘记这个了,所以记录一下。

具体实例如下:

package com.zyj.campusmanagementv1;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.zyj.campusmanagementv1.mapper")
public class CampusManagementV1Application {

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

}

四、@MapperScan

@MapperScan 是 MyBatis-Spring 中的注解,用于批量扫描 MyBatis 的 Mapper 接口,将其注册为 Spring Bean,让框架自动生成代理实现类,方便在业务代码中注入使用,以下是核心要点:

1. 核心作用

自动扫描指定包(及子包)下的 Mapper 接口(如 UserMapper.java 这类定义数据库操作的接口 )。

通过动态代理生成 Mapper 接口的实现类,并注册到 Spring 容器,后续可直接 @Autowired 注入使用。

2. 与 @Mapper 的区别

@MapperScan:批量扫描,在启动类 / 配置类加一次即可,适合 Mapper 多、想统一管理的场景。

@Mapper:单个标记,需在每个 Mapper 接口上加,适合 Mapper 少、想明确标识的场景。

3. 底层原理

通过 @Import(MapperScannerRegistrar.class) 导入注册逻辑,MapperScannerRegistrar 会扫描指定包,为每个 Mapper 接口创建 MapperFactoryBean,最终由 Spring 管理这些 Bean 的生命周期。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐