1.6. 使用红帽构建的 Quarkus 依赖项注入
通过依赖项注入,您可以完全独立于任何客户端使用的方式使用服务。它将客户端依赖项的创建与客户端的行为分开,这使得程序设计能够松散耦合。
红帽构建的 Quarkus 中的依赖关系注入基于 Quarkus ArC,它是一个基于上下文和依赖注入(CDI)的构建构建型依赖关系注入解决方案,专为 Quarkus 架构量身定制。因为 ArC 是 quarkus-rest
的传输依赖项,因为 quarkus-rest
是您的项目的依赖项,所以 ArC 已下载。
先决条件
- 您已创建了 Quarkus Getting Started 项目。
流程
要修改应用程序并添加 companion bean,请使用以下内容创建
src/main/java/org/acme/quickstart/GreetingService.java
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow package org.acme.quickstart; import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped public class GreetingService { public String greeting(String name) { return "hello " + name; } }
package org.acme.quickstart; import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped public class GreetingService { public String greeting(String name) { return "hello " + name; } }
编辑
src/main/java/org/acme/quickstart/GreetingResource.java
以注入GreetingService
,并使用它来创建新端点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow package org.acme.quickstart; import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; @Path("/hello") public class GreetingResource { @Inject GreetingService service; @GET @Produces(MediaType.TEXT_PLAIN) @Path("/greeting/{name}") public String greeting(String name) { return service.greeting(name); } @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return "Hello from Quarkus REST"; } }
package org.acme.quickstart; import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; @Path("/hello") public class GreetingResource { @Inject GreetingService service; @GET @Produces(MediaType.TEXT_PLAIN) @Path("/greeting/{name}") public String greeting(String name) { return service.greeting(name); } @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return "Hello from Quarkus REST"; } }
如果您停止了应用程序,请输入以下命令之一重启它:
使用 Apache Maven:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn quarkus:dev
mvn quarkus:dev
使用 Quarkus CLI:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow quarkus dev
quarkus dev
使用 Maven 打包程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./mvnw quarkus:dev
./mvnw quarkus:dev
要验证端点是否返回
hello quarkus
,请在新的终端窗口中输入以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -w "\n" http://localhost:8080/hello/greeting/quarkus hello quarkus
curl -w "\n" http://localhost:8080/hello/greeting/quarkus hello quarkus