Il est très courant dans le développement d'applications Java d'avoir des injections de dépendances du même bean à différents endroits et souvent dans des relations entre beans comme dans les exemples ci-dessous :
@Service @RequiredArgsConstructor public class PersonUpdater { private final PersonValidator validator; private final DocumentService documentService; //outras utilizações no fluxo de atualização public Person toUpdate(final Person person) { validator.validate(person); //...fluxo de atualização de pessoa return person; } }
@Component @RequiredArgsConstructor public class PersonValidator { private final DocumentService documentService; public void validate(final Person person) { if (person.isAdult() && person.isMale()) { final var documents = documentService.getMilitaryDocuments(person.getId()); //validações necessárias } } }
Le bean DocumentService a été injecté à la fois dans PersonUpdater et PersonValidator . Dans PersonUpdater le bean peut être utilisé pour d'autres flux de mise à jour, cependant, dans PersonValidator le bean sera UNIQUEMENT sert à rechercher des documents militaires QUAND il s'agit de la mise à jour d'une personne de sexe masculin majeur. Une possibilité d'avoir le même résultat sont les exemples ci-dessous :
@Service @RequiredArgsConstructor public class PersonUpdater { private final PersonValidator validator; private final DocumentService documentService; //outras utilizações no fluxo de atualização public Person toUpdate(final Person person) { validator.validate(person, () -> documentService.getMilitaryDocuments(person.getId())); //...fluxo de atualização de pessoa return person; } }
@Component @RequiredArgsConstructor public class PersonValidator { public void validate(final Person person, final Supplier<List<Document>> documentsSupplier) { if (person.isAdult() && person.isMale()) { final var documents = documentsSupplier.get(); //validações necessárias } } }
Avec les Interfaces fonctionnelles, une gamme d'options pour utiliser les comportements d'une application Java s'ouvre ! Ils rendent l'utilisation plus flexible via les arguments de méthode (comme dans l'exemple) et via les attributs de certaines classes.
En plus de l'injection de dépendances qui se fait uniquement à un seul endroit, nous avons :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!