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
参照を使用して必要な追加サービスを見つけることができます。