spring.config.import プロパティの設定方法とエラー解決
Spring Boot アプリケーションで Spring Cloud Config クライアントを使用する際に「No spring.config.import property has been defined」エラーが発生する場合の解決方法について解説します。
問題の概要
Spring Boot 2.4 以降のバージョンでは、設定ファイルの読み込み方法が変更されました。従来の bootstrap.properties
や bootstrap.yml
を使用する方法は非推奨となり、新しい spring.config.import
プロパティを使用する方法が導入されました。
この変更により、古い設定方法を使用している場合に以下のエラーが発生します:
No spring.config.import property has been defined
Action:
Add a spring.config.import=configserver: property to your configuration.
If configuration is not required add spring.config.import=optional:configserver: instead.
To disable this check, set spring.cloud.config.enabled=false or
spring.cloud.config.import-check.enabled=false.
推奨される解決方法
方法1: 新しい設定方式を使用する(推奨)
Spring Boot 2.4 以降では、application.properties
または application.yml
に以下の設定を追加します。
spring.config.import=optional:configserver:http://localhost:8888
spring.application.name=your-app-name
spring:
config:
import: "optional:configserver:http://localhost:8888"
application:
name: your-app-name
TIP
optional:
プレフィックスを付けることで、設定サーバーが利用できない場合でもアプリケーションの起動が可能になります。設定サーバーが必須の場合は optional:
を省略してください。
方法2: レガシーな bootstrap 方式を使用する(非推奨)
既存のプロジェクトで従来の bootstrap.properties
方式を維持する場合は、以下の依存関係を追加します。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
その後、bootstrap.properties
または bootstrap.yml
に設定を記述します。
spring.cloud.config.uri=http://localhost:8888
spring.application.name=your-app-name
spring:
cloud:
config:
uri: http://localhost:8888
application:
name: your-app-name
WARNING
この方法は非推奨です。新規プロジェクトでは方法1を使用することを推奨します。
テスト環境での設定
テスト時に設定サーバーを使用しない場合は、以下の設定を src/test/resources/application.properties
に追加します。
spring.cloud.config.enabled=false
設定プロパティの比較
新しい方式 | レガシー方式 | 説明 |
---|---|---|
spring.config.import=configserver:http://localhost:8888 | spring.cloud.config.uri=http://localhost:8888 | 設定サーバーのURI |
spring.config.import=optional:configserver: | spring.cloud.config.import-check.enabled=false | オプショナルな設定読み込み |
バージョンの互換性
この問題は主に以下のバージョンで発生します:
- Spring Boot 2.4 以降
- Spring Cloud 2020.0.x (別名 Ilford) 以降
DANGER
SNAPSHOT、M1、M2、M3、M4 リリースは開発中のバージョンであるため、本番環境での使用は避けてください。
トラブルシューティング
Maven/Gradle プロジェクトの再読み込み
- IntelliJ IDEA: pom.xml を右クリック → Maven → Reload project
- コマンドライン:
mvn clean install
またはgradle clean build
依存関係の確認
spring-cloud-starter-config
が不要な場合は削除する- 適切な Spring Cloud バージョンを使用していることを確認する
ポート番号の確認
- 設定サーバーが正しいポートで実行されていることを確認する
まとめ
Spring Boot 2.4 以降では、設定サーバーへの接続に spring.config.import
プロパティを使用することが推奨されています。既存のプロジェクトを移行する場合や新しいプロジェクトを始める際は、この新しい方式を採用することをお勧めします。
レガシーな bootstrap.properties
方式が必要な場合のみ spring-cloud-starter-bootstrap
依存関係を追加し、非推奨であることを理解した上で使用してください。