12.5.3. Types de dépendances de service
Les services peuvent déclarer des dépendances sur d'autres services par l'une des approches suivantes :
- @
org.hibernate.service.spi.InjectService
- Toute méthode de classe d'implémentation de service qui accepte un seul paramètre et qui est annotée par @
InjectService
est considérée comme réclamant une injection de la part d'un autre service.Par défaut, le type du paramètre de méthode doit correspondre au rôle de service à injecter. Si le type de paramètre est différent du rôle de service, l'attributserviceRole
duInjectService
devra être utilisé pour nommer explicitement le rôle.Les services injectés sont requis par défaut, c'est à dire que le démarrage échouera si un service dépendant nommé est manquant. Si le service injecté est optionnel, l'attributrequis
d'InjectService
devra être déclaréfalse
(la valeur par défaut esttrue
). org.hibernate.service.spi.ServiceRegistryAwareService
- La seconde approche est une approche pull pour laquelle le service implémente l'interface de service optionnelle
org.hibernate.service.spi.ServiceRegistryAwareService
qui déclare une méthodeinjectServices
unique.En cours de démarrage, Hibernate injectera leorg.hibernate.service.ServiceRegistry
lui-même dans les services qui implémentent cette interface. Le service pourra alors utiliser la référenceServiceRegistry
pour trouver les services additionnels dont il pourrait avoir besoin.