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 @
InjectServiceest 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'attributserviceRoleduInjectServicedevra ê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'attributrequisd'InjectServicedevra ê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.ServiceRegistryAwareServicequi déclare une méthodeinjectServicesunique.En cours de démarrage, Hibernate injectera leorg.hibernate.service.ServiceRegistrylui-même dans les services qui implémentent cette interface. Le service pourra alors utiliser la référenceServiceRegistrypour trouver les services additionnels dont il pourrait avoir besoin.