Wie setzen ServletContext-Eigenschaft für ein bean in der Spring-XML-Metadaten-Konfiguration
Ich habe versucht, die Suche hier auf SO, aber ich konnte nicht finden eine Lösung. Ich habe einige XML-Metadaten, wie die folgenden.
<bean class="javax.servlet.ServletContext" id="servletContext" />
<bean class="com.abc.ProductController">
<property name="servletContext" ref="servletContext"/>
</bean>
Mit dieser Konfiguration bin ich immer eine Ausnahme, die sagen, dass "javax.servlet.ServletContext"
ist eine Schnittstelle, und es könnte nicht erstellen Sie eine bean mit der id servletContext
. Der ProductController-Klasse ist in einigen jar-Datei, die ich nicht ändern kann, aber ich möchte es als eine Bohne in meiner Anwendung. Es hat ServletContext Eigenschaft autowired.
InformationsquelleAutor phoenix | 2014-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie müssen zum erstellen einer bean für
ServletContext
in einer XML-config-spring-Anwendung, können Sie einBeanFactory<ServletContext>
UmsetzungServletContextAware
Können Sie dann erklären :
InformationsquelleAutor Serge Ballesta
Nur autowire der Kontext, in dem controller:
Warum wollen Sie injizieren etwas dann? 😉
Der code hat schon Autowired-annotation
In diesem Fall ist es nicht gescannt und keine DI-Box stattfindet. Können Sie nach Ihren xyz-servlet.xml?
Ich habe bereits erwähnt das xml. Das Glas, das ich habe ist verschleiert. So, wahrscheinlich, dass die annotation ist die mission von Glas.
InformationsquelleAutor Stefan
Du nicht auf den servlet-Kontext in der XML wie diese, weil Ihr Lebenszyklus wird gesteuert durch den servlet-container.
Die Lösung ist
com.abc.ProductController
implementieren ServletContextAware und dann Frühling wird es für Sie.So könnte Sie erstellen Sie eine neue Klasse in Ihre webapp die sich
ProductController
(wenn es nicht final) und implementiertServletContextAware
? Sie würden dann ein handle auf dieServletContext
über diesetServletContext
Methode und je nach superclass-Methode die Sichtbarkeit könnte man es auch so. Viele 'wenns' zwar, aber es könnte funktionieren!InformationsquelleAutor Steve C
Mit java-config verwenden ServletContextFactory erstellt von Serge Ballesta oben und:
InformationsquelleAutor adyjr