Bonjour à tous,
je vous expose mon problème, et peut être que je fait fausse route sur l'orientation prise, alos je commence par planter le contexte:
J'ai un projet springboot existant et toujours en évolution que je vais appeler PA.
J'ai maintenant un second projet springboot à mettre en place qui est en fait une extension optionnelle du premier projet, je vais l'appeler PB.
PA peut être utilisé seul, et PB ne peut être mis en place que si PA est déjà en place.
Bien entendu, la BDD de PA ne doit pas être écrasée par la mise en place de PB, mais une fois PB installé, il n'est plus possible de revenir à PA seul.
évolution possibles donc:
PA seul -> PB (qui utilise donc PA)
Pour la partie technique :
PA est un projet springboot avec services rest, JPA , swagger etc. packagé en war et deployé sur un tomcat.
PB est un nouveau projet dont les services rest sont indépendant mais qui s'appuie sur le socle de PA pour une grande partie des resources/controlleurs etc.
La structure du projet:
pom parent
|
|- pom API PA
|- pom Serveur oAuth
|- pom resources
|- pom services
|- pom component
(et maintenant, l'idée de base est d'ajouter)
|- pom API PB
API PA génère un war et doit continuer à le faire pour ses évolutions pour les utilisateurs ne souhaitant que PA
API PB génère un second war qui utilise en dépendance le jar de PA et donc permet d'exposer PA + les fonctionnalités optionnelles de PB
J'ai donc tenté de générer mon war PB et ça roule en ayant la dépendance et en générant un jar de PA lors du build.
Mon soucis est que je ne paut pas démarrer PB dans mon tomcat car spring me dit que je ne suis pas dans le bon contexte au niveau de la datasource.
J'ai tenté dans PB d'écrire ma classe de config avec ComponentScan qui reprend l'ensemble des packages de PA + ceux de PB). De même, classe avec SpringBootApplication propre à PB
résultat : PA ne peut pas accéder à la datasource car pas dans le contexte (ce qui me paraissait logique car PA possède son propre contexte avec la conf springboot par annotation)
J'ai ensuite tenté dans PB d'étendre les classes SpringBootApplication de PA, idem pour la conf
résultat : PB ne peut pas accéder à la datasource car pas dans le contexte
Mes question :
Quelqu'un à t-il déjà fait un truc du genre (un springboot qui étend les fonctionnalités d'un autre) ?
Est-ce que je prends la bonne orientation (il se peut que je soit vraiment rouillé après 3 ans passé dans d'autres domaines) ?
Dois-je externaliser la conf springboot de PA pour en faire un sous module commun à PA et PB avec des profiles/goals différents ? (et dans ce cas, comment rendre des annotations optionnelles en fonction du profil maven?)
Merci pour vos suggestions/retours![]()
Partager