Import dynamique selon fichier
Bonjour,
Voici la description du problème:
J'ai un appel d'un web service s'effectuant comme suit:
Code:
1 2 3 4
| @Autowired
private ManagePartyAdapterService managePartyAdapterService;
managePartyAdapterService.appelService(); |
Il s'agit d'un interface.
Selon le contenu d'un fichier de config, je dois pouvoir utiliser une autre interface.
(Celle-ci possède le même nom et les mêmes méthodes, mais fonctionnant différemment sur un endPoint différent)
Dans un cas j'aimerais donc avoir
Code:
import com.interfaces.(...).ManagePartyAdapterService;
et dans l'autre
Code:
import com.interfacesbis.(...).ManagePartyAdapterService;
Solutions étudiées:
Création de 2 varialbes
Code:
1 2 3 4 5
| @Autowired
private package1.ManagePartyAdapterService service;
// et
@Autowired
private package2.ManagePartyAdapterService servicebis; |
et truc du genre
Code:
1 2
| if (lectureFichier = cas1) service.appelService();
else servicebis.appelService(); |
Mais j'aurai un problème avec la configuration Spring et les @Autowired + le setter qui doit être unique sinon ça complique pas mal de choses.
Cette classe appelant le service possède des méthodes appelées un peu partout dans un projet de 200 classes je préfère donc pas dupliquer la classe et gérer son appel partout.
Y a-t-il un moyen simple de régler ce problème? (en espérant que ce soit clair).
Un import $package; serait parfait mais pas trouvé comment faire :mrgreen:
(Edit: je remarque que cette idée est stupide vu que je dis plus bas que je ne dois pas recompiler le projet)
Je vois sinon la compilation dynamique en mettant un "change-me" à la place du package, et compiler en mettant le contenu du fichier, mais le projet ne doit pas être recompilé/redéployé. Il faut modifier le fichier de config et à la limite relancer l'appli.
Voilou merci :aie: