Quarkus实战:专为Kubernetes而优化的Java解决方案
上QQ阅读APP看书,第一时间看更新

5.6 依赖注入

问题

如何在类中注入依赖?

解决方案

使用上下文和依赖注入(Contexts and Dependency Injection,CDI)。

讨论

Quarkus中的依赖注入(DI)基于标准的Contexts and Dependency Injection 2.0规范(https://oreil.ly/VcDnN),对基本的用例做了一些简单的修改。

Quarkus实现了大部分的规范,除了一些不会影响你的代码实现的边缘情况。Quarkus网站维护了一个支持的功能和限制的列表,包括本书没有涉及的更高级的功能。你可以在Quarkus CDI参考指南(https://oreil.ly/-LPAd)中找到这些列表。

注入的发生与你在其他使用CDI的应用程序中预期的一样:

❶需要使用@Inject注解

❷由于反射的限制,首选包私有注入字段

注入的服务很标准,没有任何特殊的地方:

❶下面会提到,为了让这个类能被找到,你应该使用bean定义的注解Quarkus中的bean发现遵循标准CDI的简化过程。简而言之,如果你的应用程序类中没有一个bean定义的注解(https://oreil.ly/jm4QF),Quarkus将不会发现它们。

另见

要了解更多信息,请参见以下网页。

·JBoss:JSR 365:Contexts and Dependency Injection for Java 2.0(https://oreil.ly/clOD4

·GitHub:GraalVM Native Image Compatibility and Optimization Guide(https://oreil.ly/7sgPm