13 Google Guice 集成
ratpack-guice
扩展提供了对 Google Guice 的集成。此扩展的主要功能是允许服务器注册表由 Guice 构建。也就是说,一个 Guice Injector
可以作为 Ratpack Registry 提供。这允许应用程序的连接由 Guice 模块和绑定来指定,但仍然允许注册表成为运行时不同 Ratpack 扩展之间的通用集成层。
截至 2.0.0-rc-1,ratpack-guice
模块针对 Guice 5.1.0(以及 多绑定扩展)构建,并依赖于它们。
1.13 模块
Guice 提供了模块的概念,它是一种提供对象的配方。有关详细信息,请参阅 Guice 的 “入门” 文档。
ratpack-guice
库提供了 BindingsSpec
类型,用于指定应用程序的绑定。
2.13 依赖注入的处理程序
Guice 集成为您提供了一种解耦应用程序组件的方法。您可以将功能分解为独立的(即非Handler
)对象,并从您的处理程序中使用这些对象。这使得您的代码更易于维护和测试。这是标准的“依赖注入”或“控制反转”模式。
Guice 类提供静态 handler()
工厂方法,用于创建作为应用程序基础的根处理程序。这些方法(常用的方法)公开了 Chain
实例,该实例可用于构建应用程序的处理程序链。这些方法公开了的实例提供了可以通过 getRegistry()
方法获取的注册表,该注册表可用于构造依赖注入的处理程序实例。
有关示例代码,请参阅 Guice 类的文档。
3.13 Guice 和上下文注册表
TODO 基于 guice 的注册表实现
这提供了一种依赖注入处理程序的替代方法,因为对象可以直接从上下文中按需检索。
更有用的是,这意味着 Ratpack 基础设施可以通过 Guice 模块集成。例如,Guice 模块可以提供 ServerErrorHandler
的实现。由于 Guice 绑定的对象已集成到上下文注册表查找机制中,因此此实现将参与错误处理基础设施。
对于所有通过上下文注册表查找工作的 Ratpack 基础设施,情况都是如此,例如 Renderer 实现。