クイック スタート:Azure App Configuration を使用して Java Spring アプリを作成する
このクイック スタートでは、コードとは別にアプリケーション設定のストレージと管理を一元化するために、Azure App Configuration を Java Spring アプリに組み込みます。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料で作成できます。
- App Configuration ストア。 ストアを作成します。
- バージョン 11 を含む、サポートされている Java Development Kit (JDK)。
- Apache Maven バージョン 3.0 以降。
- Spring Boot アプリケーション。 ない場合は、Spring Initializr で Maven プロジェクトを作成します。 必ず、[Maven プロジェクト] を選択し、[依存関係] に [Spring Web] 依存関係を追加してから、Java のバージョン 8 以降を選択してください。
キーと値を追加する
App Configuration ストアに次のキーと値を追加し、[ラベル] と [コンテンツのタイプ] を既定値のままにします。 Azure portal または CLI を使用してストアにキーと値を追加する方法の詳細については、キーと値の作成に関する記事を参照してください。
キー | 値 |
---|---|
/application/config.message | こんにちは |
App Configuration ストアに接続する
App Configuration ストアが作成されたので、Spring Cloud Azure Config スターターを使用して、作成した App Configuration ストアとアプリケーションが通信できるようにすることができます。
Spring Cloud Azure Config スターター モジュールをインストールするには、次の依存関係を pom.xml ファイルに追加します。
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.18.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
アプリケーションをコーディングする
Spring Cloud Azure Config スターターを使用して、作成した App Configuration ストアとアプリケーションが通信できるようにするには、次の手順に従ってアプリケーションを構成します。
MyProperties.java という名前の新しい Java ファイルを作成し、次の行を追加します。
import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "config") public class MyProperties { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
HelloController.java という名前の新しい Java ファイルを作成し、次の行を追加します。
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { private final MyProperties properties; public HelloController(MyProperties properties) { this.properties = properties; } @GetMapping public String getMessage() { return "Message: " + properties.getMessage(); } }
メイン アプリケーションの Java ファイルで、
@EnableConfigurationProperties
を追加して、MyProperties.java 構成プロパティ クラスが有効になるようにし、それを Spring コンテナーに登録します。import org.springframework.boot.context.properties.EnableConfigurationProperties; @SpringBootApplication @EnableConfigurationProperties(MyProperties.class) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
DefaultAzureCredential
を使って、App Configuration ストアに対する認証を行います。 手順に従って、資格情報に App Configuration データ閲覧者ロールを割り当てます。 アプリケーションを実行する前に、アクセス許可が伝わるのに十分な時間をおいてください。 AppConfigCredential.java という名前の新しいファイルを作成して、次の行を追加します。import org.springframework.stereotype.Component; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer; @Component public class AppConfigCredential implements ConfigurationClientCustomizer { @Override public void customize(ConfigurationClientBuilder builder, String endpoint) { builder.credential(new DefaultAzureCredentialBuilder().build()); } }
次に、
resources/META-INF
ディレクトリにspring.factories
ファイルを作成して、次の行を追加し、com.example.MyApplication
を実際のアプリケーション名とパッケージで更新して、構成 BootstrapConfiguration を作成します。org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.example.MyApplication
自動生成された単体テストを開き、Azure App Configuration を無効にするように更新します。そうしないと、単体テストの実行時にサービスからの読み込みが試行されます。
import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest(properties = "spring.cloud.azure.appconfiguration.enabled=false") class DemoApplicationTests { @Test void contextLoads() { } }
アプリの resources ディレクトリに、bootstrap.properties という名前の新しいファイルを作成し、そのファイルに以下の行を追加します。
spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT}
APP_CONFIGURATION_ENDPOINT という名前の環境変数を、App Configuration ストアへのアクセス キーに設定します。 コマンド ラインで次のコマンドを実行してコマンド プロンプトを再起動し、変更が反映されるようにします。
setx APP_CONFIGURATION_ENDPOINT "<endpoint-of-your-app-configuration-store>"
Windows PowerShell を使用する場合は、次のコマンドを実行します。
$Env:APP_CONFIGURATION_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
macOS または Linux を使用する場合は、次のコマンドを実行します。
export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
アプリをビルドしてローカルで実行する
ルート ディレクトリに対するコマンド プロンプトを開き、次のコマンドを実行して、Maven を使用して Spring Boot アプリケーションをビルドし、実行します。
mvn clean package mvn spring-boot:run
アプリケーションが実行されたら、curl を使用してアプリケーションをテストできます。次に例を示します。
curl -X GET http://localhost:8080/
App Configuration ストアに入力したメッセージが表示されます。
リソースをクリーンアップする
この記事で作成したリソースを継続して使用しない場合は、ここで作成したリソース グループを削除して課金されないようにしてください。
重要
リソース グループを削除すると、元に戻すことができません。 リソース グループとそのすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 この記事のリソースを、保持したい他のリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのペインから個別に削除します。
- Azure portal にサインインし、 [リソース グループ] を選択します。
- [名前でフィルター] ボックスにリソース グループの名前を入力します。
- 結果一覧でリソース グループ名を選択し、概要を表示します。
- [リソース グループの削除] を選択します。
- リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、 [削除] を選択します。
しばらくすると、リソース グループとそのすべてのリソースが削除されます。
次のステップ
このクイックスタートでは、新しい App Configuration ストアを作成して、Java Spring アプリで使用しました。 詳細については、「Azure の Spring」を参照してください。 その他の質問については、リファレンス ドキュメントを参照してください。Spring Cloud Azure App Configuration ライブラリのしくみに関する詳細がすべて記載されています。 Java Spring アプリで構成設定を動的に更新できるようにする方法については、次のチュートリアルに進んでください。