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-jdbc、mybatis-spring-boot-starter、spring-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);
}
}
注意:不要因为报错就盲目排除,排除之后再注入 JdbcTemplate、SqlSessionFactory 等会触发“找不到 Bean”的新错误。
三、快速排查清单
- 是否引入了数据库 starter 但暂时不想用?→ 排除自动配置。
- 是否想用数据库?→ 检查
spring.datasource.url是否配置、拼写是否正确。 - 配置文件是否在 resources 目录、当前 profile 是否已激活。
- 驱动版本是否匹配(MySQL 5.x 与 8.x 驱动类名不同)。