第5章 Quarkus ディペンデンシーインジェクション (依存性の注入) の使用
ディペンデンシーインジェクション (依存性の注入) により、クライアントによる消費とは完全に独立した方法で、サービスが使用されるようになります。クライアントの動作からクライアントの依存関係の作成を分離させるので、プログラム設計の結合度を弱めることができます。
Red Hat ビルドの Quarkus におけるディペンデンシーインジェクション (依存性の注入) は、Quarkus ArC をベースとしています。Quarkus ArC とは、Quarkus アーキテクチャーに合わせた CDI ベースのビルドタイム指向のディペンデンシーインジェクションソリューションのことです。Arc は quarkus-resteasy の推移的な依存関係であり、quarkus-resteasy はお客様のプロジェクトの依存関係であるため、ArC はすでにダウンロードされています。
前提条件
- Quarkus Getting Started プロジェクトを作成している。
手順
アプリケーションを変更し、コンパニオン Bean を追加するには、以下の内容で
src/main/java/org/acme/quickstart/GreetingService.javaファイルを作成します。package org.acme.quickstart; import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class GreetingService { public String greeting(String name) { return "hello " + name; } }src/main/java/org/acme/quickstart/GreetingResource.javaを編集してGreetingServiceをインジェクトし、これを使用して新しいエンドポイントを作成します。package org.acme.quickstart; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.jboss.resteasy.annotations.jaxrs.PathParam; @Path("/hello") public class GreetingResource { @Inject GreetingService service; @GET @Produces(MediaType.TEXT_PLAIN) @Path("/greeting/{name}") public String greeting(@PathParam String name) { return service.greeting(name); } @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return "hello"; } }アプリケーションを停止した場合は、以下のコマンドを入力して再起動します。
./mvnw compile quarkus:devエンドポイントが
hello quarkusを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。curl -w "\n" http://localhost:8080/hello/greeting/quarkus hello quarkus