13.5.3. サービス依存関係の種類
サービスは、次の 2 つのアプローチのいずれかを使用して、他のサービスへの依存関係を宣言できます。
- @
org.hibernate.service.spi.InjectService - 単一のパラメーターを受け入れ、@
InjectServiceでアノテーションが付けられたサービス実装クラスのメソッドは 、別のサービスの挿入を要求していると見なされます。デフォルトでは、method パラメーターのタイプは、インジェクトされるサービスロールになることが想定されます。パラメーターのタイプがサービスロールと異なる場合は、InjectServiceのserviceRole属性を使用してロールに明示的な名前を付ける必要があります。デフォルトでは、インジェクトされたサービスは必須とみなされ、名前付き依存サービスがないと、起動に失敗します。インジェクションするサービスがオプションの場合、InjectServiceのrequired属性はfalseと宣言する必要があります (デフォルトはtrue)。 org.hibernate.service.spi.ServiceRegistryAwareService- 次のアプローチは、単一の
injectServicesメソッドを宣言する、オプションのサービスインターフェースorg.hibernate.service.spi.ServiceRegistryAwareServiceをサービスが実装するプルアプローチです。Hibernate は起動時に、org.hibernate.service.ServiceRegistry自体をこのインターフェースを実装するサービスに挿入します。その後、ServiceRegistry参照を使用して必要な追加サービスを見つけることができます。