最近、springboot を使用するときにエラーが発生しました: '' の下のプロパティを 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 では、JDBC URL、ユーザー名、パスワードなどのデータベース接続の関連パラメーターをアプリケーション構成ファイル (application.yml や application.properties など) で指定する必要があります。このエラーは通常、構成ファイルに正しいパラメータが指定されていない、または指定されていないことが原因で発生します。
解決
このエラーを解決するには、次の点を確認する必要があります。
-
設定ファイルのパラメータが正しく設定されているか確認してください。たとえば、パラメータ名のスペルが正しいかどうか、データベース URL が正しいかどうかなどを確認します。
-
Maven 依存ライブラリが正しくロードされているかどうかを確認します。Spring Boot を使用してデータベースに接続する場合、通常は何らかの JDBC ドライバーを使用します。JDBC ドライバーの依存関係が pom.xml で正しく指定されていることを確認してください。
-
MySQL/JDBC ドライバーがインストールされている場合は、環境変数と Java パスが正しく設定されているかどうかを確認してください。
以下に、Hikari 接続プールを使用して Spring Boot で 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 アノテーションを使用して構成構成を 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 または他のデータベースに接続すると、「'' の下のプロパティを com.zaxxer.hikari.Hikari DataSource にバインドできませんでした」エラーは、いくつかの一般的な問題によって発生する可能性があります。構成ファイル、Maven の依存関係、および環境変数が正しく設定されていること、およびデータベース接続プールがコード内で正しく使用されていることを注意深く確認する必要があります。この記事がこの問題をうまく解決し、今後の開発プロセスで Spring Boot をよりスムーズに使用するのに役立つことを願っています。