5.3. 服务依赖项类型


允许服务使用以下方法之一声明对其他服务的依赖:

@org.hibernate.service.spi.InjectService

服务实施类上接受单个参数并标有 @InjectService 的任何方法都被视为请求注入其他服务。

默认情况下,方法参数的类型应当是要注入的服务角色。如果参数类型与 service 角色不同,则应当使用 InjectService 的 serviceRole 属性来显式命名该角色。

默认情况下,注入的服务被视为必需,如果缺少指定的依赖服务,则启动该服务将失败。如果要注入的服务是可选的,InjectService 的 required 属性应声明为 false。默认值为 true

org.hibernate.service.spi.ServiceRegistryAwareService

第二种方法是拉取方法,其中服务实施可选的服务接口 org.hibernate.service.spi.ServiceRegistryAwareService,它声明了单一 注入服务方法

在启动过程中,Hibernate 会将 org.hibernate.service.ServiceRegistry 自身注入到实施此接口的服务中。然后,服务可以使用 ServiceRegistry 引用来查找所需的任何其他服务。

5.3.1. Service Registry

5.3.1.1. 关于 ServiceRegistry

除服务本身外,中央服务 API 是 org.hibernate.service.ServiceRegistry 接口。服务注册表的主要用途是保存、管理和提供对服务的访问。

服务注册表采用层次结构。个注册表中的服务可以依赖于并使用同一注册表中的服务以及任何父注册表。

使用 org.hibernate.service.ServiceRegistryBuilder 构建 org.hibernate.service.ServiceRegistry 实例。

使用 ServiceRegistryBuilder 创建 ServiceRegistry 的示例

ServiceRegistryBuilder registryBuilder =
    new ServiceRegistryBuilder( bootstrapServiceRegistry );
    ServiceRegistry serviceRegistry = registryBuilder.buildServiceRegistry();
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat