You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot启动报错:loginController中userDao依赖注入失败求助

问题排查与修复方案

核心错误原因

  1. 启动类排除了数据源自动配置:@SpringBootApplication注解添加了exclude= {DataSourceAutoConfiguration.class}参数,直接禁用了SpringBoot的数据源自动装配逻辑,Mybatis运行必须依赖的DataSource、SqlSessionFactory、SqlSessionTemplate等核心组件无法初始化,是触发本次报错的直接原因。
  2. 冗余配置问题:
    • 启动类已添加全局@MapperScan,LoginController类上的@MapperScan完全多余
    • UserDao上的@Repository为冗余注解,Mybatis的Mapper接口被@MapperScan扫描后会自动注册为Bean,无需额外添加该注解(该问题不会触发报错)
    • 未配置数据库连接参数和Mybatis的Mapper文件扫描路径

具体修复步骤

1. 修正启动类配置

修改CourseworkApplication.java代码,删除数据源排除配置,精准指定Mapper扫描路径:

package com.xrg.coursework;

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

@SpringBootApplication
@MapperScan("com.xrg.coursework.dao") // 精准指定Mapper包路径,比通配符更稳妥
public class CourseworkApplication {
    public static void main(String[] args) {
        SpringApplication.run(CourseworkApplication.class, args);
    }
}

2. 删除LoginController的冗余注解

移除LoginController类上的@MapperScan注解:

package com.xrg.coursework.controller;
import com.xrg.coursework.bean.User;
import com.xrg.coursework.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoginController {
    @Autowired
    UserDao userDao;

    @RequestMapping("/login")
    public String login(@RequestBody User user){
        User us = userDao.getUserByMassage(user.getUsername(), user.getPassword());
        System.out.println("user:" + us);
        return "ok";
    }
}

3. 添加项目配置文件

在resources目录下新建application.yml(若使用properties格式可自行转换),添加数据库和Mybatis配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver # MySQL5版本请替换为com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/你的数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
    username: 你的数据库用户名
    password: 你的数据库密码

mybatis:
  # 对应Mapper.xml文件的存放路径,若直接放在resources下可改为classpath:*.xml
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.xrg.coursework.bean # 实体类包路径,配置后xml中resultType可直接写类名

4. 检查Mapper文件存放位置

确保UserMapping.xml放在上一步mapper-locations配置的对应路径下,比如配置为classpath:mapper/*.xml,就需要在resources目录下新建mapper文件夹,将xml文件放入其中。

5. 检查pom依赖完整性

确认pom.xml中已引入Mybatis和MySQL驱动依赖,缺失的话添加如下配置:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version> <!-- 可根据你的SpringBoot版本调整对应适配版本 -->
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

内容的提问来源于stack exchange,提问作者Rightcan Tse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:54:01