Java-KRIEG - Load Spring-Bean aus einem externen JAR
Ich würde gerne laden in meinem Spring MVC Web-Anwendung (verpackt als KRIEG) einige Spring-framework Bohnen kommentiert mit @Service
von einem externen Gefäß, das dafür zuständig ist, den Zugriff auf eine Datenbank und befindet sich in der classpath unter /WEB-INF/lib. Wenn möglich, wäre es wünschenswert, laden Sie Sie automatisch mithilfe der @Autowired
annotation.
Ich habe erfolgreich die Lösung in diesem link1:
this.ctx = new ClassPathXmlApplicationContext("services-context.xml");
this.myAService = ctx.getBean("myAService");
Jedoch, diese Lösung verwendet das Spring-API-Funktion getBean was als eine schlechte Praxis (siehe link2).
Ich auch schon versucht, ohne Glück zwei weitere Dinge zu laden, die externe jar-Datei ApplicationContext:
- WARs appContext.xml:
<import resource="classpath*:/WEB-INF/lib/pathToExternalJar/applicationContext.xml">
- WARs, web -, xml -> laden Sie die Gläser appContext wie hier beschrieben (link3). (z.B. *applicationContext.xml):
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:localSpringContext.xml classpath:*applicationContext.xml </param-value> </context-param>
Was ist der beste Ansatz zum Last-Bohnen richtig und wie sollte es getan werden?
InformationsquelleAutor aloplop85 | 2013-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
WARs appContext.xml und WARs web xml sind beide machbar. Wenn Sie brauchen, um run-integration-tests, basierend auf localSpringContext.xml und externen jar ' s applicationContext.xml Häufig, ich empfehle das WARs appContext.xml Ansatz.
Updated1:
WARs appContext.xml:
WARs web-xml:
Zum Beispiel, wenn Ihr applicationContext.xml ist unter Paket :com/gmail/hippoom
können Sie es durch classpath:com/gmail/hippoom/applicationContext.xml oder classpath*:applicationContext.xml mit wildcard.
Sorry, ich verpasste Ihr Kommentar, finden Sie die aktualisierte Antwort.
Gut, der benötigte Pfad war wirklich mein problem. Ich haben es endlich geschafft Dank eurer Hilfe 🙂 mit: <import resource="classpath:myExternalApplicationContext.xml"/> als XML wurde direkt unter dem GLAS (derzeit nicht in jedem Paket com/gmail/hippoom). Also -> {classpath} = "". Jetzt mit import geladen werden, die perfekt die externe Datei ApplicationContext. Danke nochmal für Eure Hilfe.
InformationsquelleAutor Yugang Zhou