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