Salut tout le monde !

Je me pose une question que je n'ai pas abordé jusqu'à présent dans mes projets Spring, et je vais vous l'exposer :

J'ai un projet "socle", qui contient des DAO et des objets métiers utilisant ces DAO. Je procède à l'injection des dépendances via Spring.

Maintenant, imaginons un projet qui utilise ce socle. Quelle est la meilleure solution entre "étendre les services" et "injecter les services" ?

Pour mieux comprendre ma question, qui je suis sûr est obscure comme un trou dans un mur des catacombes, voici une représentation plus "technique" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
// Dans le projet socle
class TotoService {
  TotoDAO totoDAO;
 
  public void methodeA(objet) {
    // Utilise TotoDao, injecté
    totoDAO.insererObjet(objet);
  }
 
}
Première méthode : étendre les services

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
// Dans le projet A qui étend mon projet socle
class TotoServiceProjetA extends TotoService {
  public void methodeB(objet) {
    traitementObjet(objet);
    methodeA(objet);
  }
}
Deuxième méthode : injecter les services

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
// Dans le projet A qui récupère par injection la dépendance
class TotoServiceProjetA {
  TotoService totoService; // Injecté par Spring
  public void methodeB(objet) {
    traitementObjet(objet);
    totoService.methodeA(objet);
  }
}
Dans un cas, on a un héritage, ce qui me parrait gênant, mais ça parrait propre conceptuellement. Dans le second cad, on a une injection, qui ne me choque pas..

Que feriez-vous à ma place ?

Merci pour les informations