问题描述

如上图所示,在加入了 @MapperScan 注解之后就出现了这个问题。
file:[src/java/config/MybatisConfig.java]
@Configuration
@MapperScan("com.example.iocdi")
public class MybatisConfig {
}
因为这个 @MapperScan 注解扫描了 com.example.iocdi 下面所有的包,

而 UserServiceImpl 的接口是 UserService,它们的类型一致,导致注入的 bean 类型重复,不知道哪一个 bean 是对的。
并且,我在 Controller 层中注入的方式是以接口类型作为变量注入的实现类:
file:[src/java/controller/UserController.java]
@RequiredArgsConstructor
@RestController("/user")
public class UserController {
private final UserService service;
@GetMapping("/get/all")
public List<User> getUserAll() {
return service.queryAll();
}
}
解决方式
只需要缩小 @MapperScan 扫描的范围即可,让它只扫描 mapper 包下的 bean。
file:[src/java/config/MybatisConfig.java]
@Configuration
del:[@MapperScan("com.example.iocdi")]:del
add:[@MapperScan("com.example.iocdi.mapper")]:add
public class MybatisConfig {
}