2017-12-07 3 views
0

Ich habe ein Projekt, das Spring Batch mit Spring Web mischt. Es ist in erster Linie ein Spring Batch-Projekt, das Jobs ausführt, aber wir haben ein paar REST-Endpunkte dort und das Spring Batch Admin Manager Modul. Unser Basisprojekt hat einen eigenen (primären) Anwendungskontext, aber das Admin Manager-Projekt, das wir in POM integriert haben, erzeugt auch seinen eigenen Kontext.Wie kann ich Beans aus bestimmten Kontexten im Frühling ausschließen?

Eine meiner Klassen ist ein @RestController was bedeutet, dass es automatisch von beiden Kontexten instanziiert wird. Dieser Controller hat ein paar @Autowired Abhängigkeiten, was in Ordnung ist, wenn der erste Kontext ausgeführt wird, weil er alle findet. Wenn der zweite Kontext jedoch ausgeführt wird, werden diese Abhängigkeiten nicht gefunden und die App kann nicht ordnungsgemäß gestartet werden.

Da aber dieser zweite Kontext automatisch hinter dem Kulissen des oben erwähnten Projekts Sping Batch Admin Manager erstellt wird, habe ich nicht wirklich die Kontrolle darüber. Gibt es eine Möglichkeit, manuell in meinem @RestController angeben, dass es von allen außer meinem primären Kontext ausgeschlossen werden sollte?

Antwort

1

Sie können eine der @Conditional Annotationen verwenden

Z.B. @ConditionalOnClass oder @ConditionalOnMissingClass oder @ConditionalOnBean oder @ConditionalOnMissingBean

So Ihre Controller prüft nur, ob es Klassen/Bohnen, die den Endpunkt

erforderlich ist, laufen mehr lesen here

Verwandte Themen