Kürzlich bin ich beim Einsatz des Listeners auf das Problem gestoßen, dass Spring nicht injiziert werden konnte, der Code ist wie folgt: Diese Aufgabe ist immer null, das Paket wurde offensichtlich weggefegt, aber es kann nicht injiziert werden.
Der Grund ist folgender: Der Listener-Hörer kann die Bohne nicht mit dem @Resource des Spring-Containers oder der Methode @Autowired Annotation injizieren, weil im Webserver-Container,Weder Servlet, Filter noch Listener werden von Spring-Containern verwaltet,Daher können wir die Spring-Annotationsmethode in diesen Klassen nicht direkt verwenden, um die benötigten Objekte einzuspeisen。 Hier wird der gesamte Lebenszyklus des Servlets vom Servlet-Container abgedeckt. Wenn du es in einen Spring-Container legst, um es zu erstellen, kann das Servlet-Objekt vom Spring-Container erstellt werden, aber der Servlet-Container weiß möglicherweise nicht, dass der Servlet existiert, weil er sich nicht in einem eigenen Container befindet. Daher wird das Servlet vom Webserver verwaltet, nicht vom Frühling.
Nehmen Sie folgende Änderungen vor:
Aus dem Kontext des Frühlings betrachtet, löste es das Problem perfekt.
|