java 技术随笔

Spring Boot 启动报错:Failed to configure a DataSource 原因与解决方案

在 Spring Boot 项目启动时报错 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured,这是新手最常见的启动异常之一。本文从根因到解决方案逐一拆解。

一、为什么会出现这个报错

Spring Boot 在类路径下检测到数据库相关依赖(如 spring-boot-starter-jdbcmybatis-spring-boot-starterspring-boot-starter-data-jpa)时,会自动加载 DataSourceAutoConfiguration,尝试创建数据源。如果此时没有在配置文件中提供 spring.datasource.url 等必要信息,自动配置就会失败并抛出该异常。

二、解决方案

1. 补齐数据源配置(最常见)

application.yml 中配置数据库连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/blog_demo?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

注意 MySQL 8.x 的驱动类为 com.mysql.cj.jdbc.Driver,并且必须指定 serverTimezone,否则会报时区异常。

2. 确认配置文件被正确加载

检查 application.yml / application.properties 是否位于 src/main/resources 下;多环境配置(如 application-dev.yml)需要通过 spring.profiles.active=dev 激活,否则配置不会生效。

3. 确实不需要数据库时排除自动配置

若该项目只是一个不操作数据库的普通服务,可以排除数据源自动配置:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

注意:不要因为报错就盲目排除,排除之后再注入 JdbcTemplateSqlSessionFactory 等会触发“找不到 Bean”的新错误。

三、快速排查清单

  1. 是否引入了数据库 starter 但暂时不想用?→ 排除自动配置。
  2. 是否想用数据库?→ 检查 spring.datasource.url 是否配置、拼写是否正确。
  3. 配置文件是否在 resources 目录、当前 profile 是否已激活。
  4. 驱动版本是否匹配(MySQL 5.x 与 8.x 驱动类名不同)。
标签
Spring Boot数据源报错