Spring - Eine Abhängigkeit in einen ServletContextListener einfügen
Ich würde gerne Spritzen einer Abhängigkeit in eine ServletContextListener
. Allerdings ist mein Ansatz nicht funktioniert. Ich kann sehen, dass der Frühling ruft meine setter-Methode, aber später, wenn contextInitialized
aufgerufen wird, wird die Eigenschaft null
.
Hier ist mein set up:
Der ServletContextListener:
public class MyListener implements ServletContextListener{
private String prop;
/* (non-Javadoc)
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
@Override
public void contextInitialized(ServletContextEvent event) {
System.out.println("Initialising listener...");
System.out.println(prop);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
}
public void setProp(String val) {
System.out.println("set prop to " + prop);
prop = val;
}
}
web.xml: (dies ist der Letzte listener in der Datei)
<listener>
<listener-class>MyListener</listener-class>
</listener>
applicationContext.xml:
<bean id="listener" class="MyListener">
<property name="prop" value="HELLO" />
</bean>
Ausgabe:
set prop to HELLO
Initialising listener...
null
Was ist der richtige Weg, dies zu erreichen?
InformationsquelleAutor der Frage dogbane | 2011-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die dogbane Antwort (angenommen) funktioniert, aber es macht die Prüfung schwierig, denn der Weg beans instanziiert werden. Ich prefere der vorgeschlagene Ansatz in diesem Frage :
InformationsquelleAutor der Antwort a.b.d
Ich dieses Problem gelöst, indem Sie den listener bean und die Schaffung einer neuen Bohne für meine Eigenschaften. Ich habe dann Folgendes in meine Zuhörer, um die Eigenschaften bean:
InformationsquelleAutor der Antwort dogbane
Wie bereits erwähnt ist der ServletContextListener wird erstellt, indem der server und so ist es nicht gelungen, bis zum Frühjahr.
Wenn Sie benachrichtigt werden möchten, von den ServletContext, können Sie die Schnittstelle implementieren:
InformationsquelleAutor der Antwort o-richie-nal
Können nicht über Frühling zu tun, dass, wie bereits erwähnt, erstellt durch den server.
Wenn Sie brauchen, um passieren params, um Ihre Zuhörer können Sie definieren es in Ihrem web-xml als ein context-param
Und in den Listener, den Sie abrufen können Sie es wie unten;
Edit 1:
Siehe den link unten für weitere mögliche Lösung:
Wie injizieren von Abhängigkeiten in HttpSessionListener, mit Spring?
InformationsquelleAutor der Antwort fmucar
ServletContextListener wird vom server, nicht vom Frühling.
EDIT: AFAIK kann man nicht erreichen, was Sie möchten, was ist der Grund, den Sie einstellen wollen Instanz-Variablen in den Hörer?
InformationsquelleAutor der Antwort saugata