11.5.3. サービス依存関係のタイプ

サービスは、以下の 2 つの方法のいずれかを使用して、他のサービスに依存関係を宣言することができます。
@org.hibernate.service.spi.InjectService
単一のパラメーターを許可するサービス実装上のすべてのメソッドと、@InjectService アノテーションが付けられているメソッドは、他のサービスの挿入を要求していると見なされます。
デフォルトではメソッドパラメーターのタイプは、挿入されるサービスロールであると想定されます。パラメータータイプがサービスロールではない場合、InjectServiceserviceRole 属性を使用してロールを明示的に指定する必要があります。
デフォルトでは、挿入されたサービスは必須のサービスであると見なされます。そのため、名前付けされた依存サービスがない場合、起動に失敗します。挿入されるサービスが任意のサービスである場合、InjectServicerequired 属性を false として宣言する必要があります (デフォルトは true です)。
org.hibernate.service.spi.ServiceRegistryAwareService
2 つ目の方法は、単一の injectServices メソッドを宣言する任意のサービスインターフェース org.hibernate.service.spi.ServiceRegistryAwareService をサービスが実装する方法です。
起動中、Hibernate は org.hibernate.service.ServiceRegistry 自体をこのインターフェースが実装するサービスに挿入します。その後、サービスは ServiceRegistry 参照を使用して、必要な他のサービスを見つけることができます。