1.6. 使用 Quarkus 依赖项注入
依赖项注入支持以完全独立于任何客户端使用的方式使用服务。它将客户端依赖项的创建与客户端的行为分开,这使得程序设计能够松散耦合。
红帽构建的 Quarkus 中的依赖注入基于 Quarkus ArC,它是基于上下文和依赖注入(CDI)的基于构建时导向的依赖项注入解决方案,专为 Quarkus 架构量身定制。因为 ArC 是 quarkus-resteasy
的一种传输依赖项,quarkus-resteasy
是项目的依赖项,所以 ArC 已下载。
先决条件
- 您已创建了 Quarkus Getting Started 项目。
流程
要修改应用程序并添加 companion 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