Quarkus云原生微服务开发实战
上QQ阅读APP看书,第一时间看更新

第3章 Quarkus的依赖注入

使用过Spring框架的读者对于依赖注入(Dependency Injection)的概念应该并不陌生。大部分Java开发人员都已经习惯了这种使用对象的模式。Quarkus也提供了对依赖注入的支持,只不过使用的是CDI(Contexts and Dependency Injection)规范。

在一般的Java应用中,对象的创建由应用自身的代码来负责管理。应用同时还需要负责管理对象在不同代码中的传递。一个对象可能依赖其他的很多对象,这就意味着需要把一个对象的引用在不同的代码调用中进行传递。这造成了对象引用管理的混乱,也促进了依赖注入的流行。

Quarkus应用中的大部分对象实例都不是由应用代码直接创建的,而是由容器负责创建并管理。当需要使用某种类型的对象时,由容器提供相应的对象实例,这种方式称为依赖注入。应用代码虽然不负责对象实例的创建,但是可以通过Java注解或配置等方式来声明使用对象实例的策略。容器的存在简化了对象实例的管理。除了依赖注入之外,容器还提供了对象的生命周期回调方法和拦截器等功能。

Quarkus的CDI支持由扩展arc提供。该扩展的实现基于CDI 2.0规范,但是并不是一个完全兼容的实现。该扩展实现了CDI规范中的大部分重要的内容,还添加了一些Quarkus独有的功能。