Je construis une application printemps-boot + Grails en utilisant Grails 3.3.0 et printemps-boot 1.5.6.RELEASEContexte de construction (client à la consommation) d'application de printemps spécifique
Je contrôleur au service des données JSON à l'application client à la consommation .
ExampleController.groovy
class ExampleCotnroller {
def endpointServerJosn(){
}
}
Récemment, un plus grand public a été introduit et les données attend JSON similaires, mais à partir d'une autre source.
J'ai donc ajouté un drapeau à mon application.yml another.client = true et modifié mon contrôleur:
Mise à jour ExampleController.groovy
class ExampleCotnroller {
def endpointServerJosn(){
if(another.client){
//server data from this client's source
}else{
//server data from other client's source
}
}
}
Mais je suis plus mis en attendent de clients et cela va gâcher mon contrôleur car je ne trouve pas ma solution évolutive par conception. Ici, chaque client possède son propre contrôleur d'API esclave pour récupérer les données.
client 1 envoie la demande -> maître (mon contrôleur) intercepte, appelle un minerai API plus esclaves liés au client, extrait des données et des granulats, il et envoie des données de retour
simiallarly, client 2 envoie une demande -> maître (mes contrôleurs) INTERCEPTE, appelle un ou plusieurs API esclaves liés au client 2
Je pensais avoir un contrôleur abstrait comme:
Est-il possible de réaliser une solution évolutive avec la conception ci-dessus?class AbstractApplicationController{
def endpointServerJson();
}
class FirstCilentController extends AbstractApplicationController {
}
class SecondClientController extends AbstractApplicationController {
}
L'application peut-elle choisir quel contrôleur utiliser en fonction de la configuration dans yml externe ou application.yml?