Skip to content

spring.config.import プロパティの設定方法とエラー解決

Spring Boot アプリケーションで Spring Cloud Config クライアントを使用する際に「No spring.config.import property has been defined」エラーが発生する場合の解決方法について解説します。

問題の概要

Spring Boot 2.4 以降のバージョンでは、設定ファイルの読み込み方法が変更されました。従来の bootstrap.propertiesbootstrap.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 に以下の設定を追加します。

properties
spring.config.import=optional:configserver:http://localhost:8888
spring.application.name=your-app-name
yaml
spring:
  config:
    import: "optional:configserver:http://localhost:8888"
  application:
    name: your-app-name

TIP

optional: プレフィックスを付けることで、設定サーバーが利用できない場合でもアプリケーションの起動が可能になります。設定サーバーが必須の場合は optional: を省略してください。

方法2: レガシーな bootstrap 方式を使用する(非推奨)

既存のプロジェクトで従来の bootstrap.properties 方式を維持する場合は、以下の依存関係を追加します。

xml
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
groovy
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'

その後、bootstrap.properties または bootstrap.yml に設定を記述します。

properties
spring.cloud.config.uri=http://localhost:8888
spring.application.name=your-app-name
yaml
spring:
  cloud:
    config:
      uri: http://localhost:8888
  application:
    name: your-app-name

WARNING

この方法は非推奨です。新規プロジェクトでは方法1を使用することを推奨します。

テスト環境での設定

テスト時に設定サーバーを使用しない場合は、以下の設定を src/test/resources/application.properties に追加します。

properties
spring.cloud.config.enabled=false

設定プロパティの比較

新しい方式レガシー方式説明
spring.config.import=configserver:http://localhost:8888spring.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 リリースは開発中のバージョンであるため、本番環境での使用は避けてください。

トラブルシューティング

  1. Maven/Gradle プロジェクトの再読み込み

    • IntelliJ IDEA: pom.xml を右クリック → Maven → Reload project
    • コマンドライン: mvn clean install または gradle clean build
  2. 依存関係の確認

    • spring-cloud-starter-config が不要な場合は削除する
    • 適切な Spring Cloud バージョンを使用していることを確認する
  3. ポート番号の確認

    • 設定サーバーが正しいポートで実行されていることを確認する

まとめ

Spring Boot 2.4 以降では、設定サーバーへの接続に spring.config.import プロパティを使用することが推奨されています。既存のプロジェクトを移行する場合や新しいプロジェクトを始める際は、この新しい方式を採用することをお勧めします。

レガシーな bootstrap.properties 方式が必要な場合のみ spring-cloud-starter-bootstrap 依存関係を追加し、非推奨であることを理解した上で使用してください。