Spring Boot报错Failed to bind properties under ‘‘ to com.zaxxer.hikari.Hikari DataSource

本文介绍了在使用Spring Boot连接数据库时遇到的'Failed to bind properties under '' to com.zaxxer.hikari.Hikari DataSource'错误的解决方法。错误通常是由于配置文件中的数据库连接参数不正确导致。解决方案包括检查配置文件参数、Maven依赖和环境变量。文中还提供了在pom.xml和application.yml中的配置示例,以及在代码中如何设置Hikari连接池。

最近在使用springboot时报了个错Failed to bind properties under '' to com.zaxxer.hikari.Hikari DataSource,经过分析和排查,最终将处理办法记录下来,并分享给大家。

问题描述

在使用 Spring Boot 连接 MySQL 或其他数据库时,出现以下错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource:

    Property: driverclassname
    Value: null
    Origin: "driverClassName" from property source "source"
    Reason: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalArgumentException: Could not load JDBC driver class [null]

    Property: url
    Value: null
    Origin: "url" from property source "source"
    Reason: Property 'url' threw exception; nested exception is java.lang.IllegalArgumentException: url is required.

    Property: username
    Value: null
    Origin: "username" from property source "source"
    Reason: Property 'username' threw exception; nested exception is java.lang.IllegalArgumentException: username is required.

    Property: password
    Value: null
    Origin: "password" from property source "source"
    Reason: Property 'password' threw exception; nested exception is java.lang.IllegalArgumentException: password is required.

分析原因

在 Spring Boot 中,我们需要在应用程序的配置文件(比如 application.yml 或 application.properties)中指定数据库连接的相关参数,例如 JDBC url、用户名、密码等。这个错误通常是由于配置文件中缺少或者没有指定正确的参数导致的。

解决方案

要解决这个错误,我们需要检查以下几点:

  1. 检查配置文件中的参数是否正确设置。比如,检查参数名是否拼写正确,数据库 url 是否正确等。

  2. 检查 Maven 依赖库是否正确加载。在使用 Spring Boot 连接数据库时,我们通常会使用某种 JDBC 驱动器。检查是否在 pom.xml 中正确地指定了 JDBC 驱动器的依赖。

  3. 如果已经安装了 MySQL/JDBC 驱动器,那么请检查环境变量和 Java 路径等是否正确配置。

下面我给出一段示例代码来说明如何在 Spring Boot 中使用 Hikari 连接池连接 MySQL 数据库。

在 pom.xml 文件中添加如下依赖:

<dependency>
     <groupId>com.zaxxer</groupId>
     <artifactId>HikariCP</artifactId>
     <version>3.4.5</version>
</dependency>

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
</dependency>

然后,在 application.yml 中添加以下配置:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/example
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      minimum-idle: 2
      maximum-pool-size: 5
      idle-timeout: 10000
      pool-name: HikariCP
      auto-commit: true
      connection-timeout: 30000
      connection-test-query: "SELECT 1"

在 Spring Boot 中,我们需要在代码中指定数据库连接池,比如 Hikari 连接池。因此,在 com.example.demo 包下创建一个名为 Config.java 的类,添加以下内容:

@Configuration
public class Config {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.hikari")
    public HikariConfig hikariConfig() {
        return new HikariConfig();
    }

    @Bean
    public DataSource dataSource() {
        return new HikariDataSource(hikariConfig());
    }

}

在这里,我们首先使用 @ConfigurationProperties 注解将 configuration 配置绑定到 Hikari 配置中,然后创建一个 DataSource 集合,将 Hikari 配置传递给其中的 HikariDataSource。DataSource 集合将被注入到 Spring Boot 应用程序中,从而使应用程序可以使用连接池。

此时,您可以在应用程序中使用 JdbcTemplate 与数据库进行交互,例如:

@Autowired
private JdbcTemplate jdbcTemplate;

public void query() {
    String sql = "select * from example";
    List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
    // do something with the result
}

如果一切设置正确,那么您现在应该可以正确连接并访问数据库了。

总结

在使用 Spring Boot 连接 MySQL 或其他数据库时,出现“Failed to bind properties under ‘’ to com.zaxxer.hikari.Hikari DataSource”错误可能是由于一些常见问题导致的。我们应该仔细检查配置文件、Maven 依赖库和环境变量是否正确设置,并且在代码中正确地使用数据库连接池。希望本文能够帮助您成功解决这个问题,在以后的开发过程中更加顺畅地使用 Spring Boot。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lishiyueup

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值