1.6. Quarkus ディペンデンシーインジェクション (依存性の注入) の使用
ディペンデンシーインジェクション (依存性の注入) により、クライアントによる消費とは完全に独立した方法で、サービスが使用されるようになります。クライアントの依存関係の作成がクライアントの動作から分離されるため、プログラム設計を疎結合にできます。
Red Hat build of Quarkus での依存性の注入は、Quarkus アーキテクチャーに合わせて調整された、コンテキストと依存性注入 (CDI) をベースとするビルドタイム指向の依存性注入ソリューションです。ArC は quarkus-resteasy の推移的な依存関係であり、
はお客様のプロジェクトの依存関係であるため、ArC はすでにダウンロードされています。
quarkus-resteasy
前提条件
- 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 quarkus:dev
エンドポイントが
hello quarkus
を返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。curl -w "\n" http://localhost:8080/hello/greeting/quarkus hello quarkus