Wenn ich DispatcherServlet verwende, erhalte ich eine java.lang.IllegalStateException: Kein WebApplicationContext gefunden: kein ContextLoaderListener registriert? Fehler, wenn ich einen DelegatingFilterProxy -Filter verwende. Daher habe ich das DispatcherServlet entfernt und verwende stattdessen stattdessen einen ContextLoaderListener , und meine Spring-Anwendung wird ordnungsgemäß geladen. Allerdings habe ich ein Problem mit einer SEHR wichtigen Bohne:
%Vor%Diese Bean funktioniert nicht mehr, keiner meiner @ Controller ist mehr URL-gemappt. Wenn ich zu DispatcherServlet zurückwechsle, kein Problem (außer dass mein Filter wieder unbrauchbar ist). Wie kann ich dieses Bean korrekt aus einem ContextLoaderListener laden?
Prost
Nik
Sie benötigen sowohl ContextLoaderListener
als auch DispatcherServlet
- die Fehlermeldung hat Ihnen nicht gesagt, dass Sie das Servlet entfernen sollen.
Um zu verdeutlichen, was Spring hier macht, erstellt DispatcherServlet
seine eigene ApplicationContext
(normalerweise mit xxx-servlet.xml
), aber alle Spring Filter, die Sie in web.xml konfigurieren, haben keinen Zugriff auf die% co_de des Servlets %.
Der ApplicationContext
erstellt einen zweiten ContextLoaderListener
(der gesamten Webanwendung zugeordnet) und verbindet sich mit dem ApplicationContext
des Servlets, sodass Filter und Servlets über Spring kommunizieren können.
Die web.xml der Spring MVC-Basisanwendung hat keinen ContextLoaderListener? Siehe Ссылка .
Grund, den ich stelle, ist, weil ich den folgenden Fehler in meiner Anwendung erhalte:
FEHLER [[Spring MVC Dispatcher Servlet]] Servlet.service () für Servlet Spring MVC Dispatcher Servlet hat eine Ausnahme ausgelöst java.lang.IllegalStateException: Kein WebApplicationContext gefunden: Kein ContextLoaderListener registriert?
und ich habe keinen ContextLoaderListener (der wahrscheinlich das Problem verursacht).
Irgendwelche Gedanken, warum die MVC basic App funktioniert?