Spring Boot - Parameter 0 of constructor in com.example.iocdi.controller.UserController required a single bean, but 2 were found

问题描述

报错截图

如上图所示,在加入了 @MapperScan 注解之后就出现了这个问题。

file:[src/java/config/MybatisConfig.java]
@Configuration
@MapperScan("com.example.iocdi")
public class MybatisConfig {

}

@MapperScan 注解扫描了 com.example.iocdi 下面所有的包:

注解扫描的包包括 UserService 和 UserServiceImpl

其中 UserService 和 UserServiceImpl(一个实现类)的类型都是一直的(Java 多态性)。注入的 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 {

}
posted @ 2023-09-12 12:37  Himmelbleu  阅读(74)  评论(0编辑  收藏  举报