Recientemente, al usar el listener, me encontré con el problema de que el resorte no podía ser inyectado, el código es el siguiente, esta tarea siempre es nula, el paquete obviamente ha sido barrido, pero no puede ser inyectado.
La razón es la siguiente: el oyente Listener no puede inyectar el bean usando el @Resource del contenedor Spring ni el método de anotación de @Autowired, porque, en el contenedor del servidor web,Ni Servlet, ni Filter, ni Listener son gestionados por contenedores Spring,Por lo tanto, no podemos usar directamente el método de anotación Spring en estas clases para inyectar los objetos que necesitamos。 Aquí, todo el ciclo de vida del servlet es gestionado por el contenedor del servlet. Si lo pones en un contenedor Spring para crearlo, el objeto servlet puede ser creado por el contenedor Spring, pero el contenedor servlet puede no saber que el servlet existe porque no está en su propio contenedor. Por lo tanto, el servlet es gestionado por el servidor web, no por la primavera.
Realiza las siguientes modificaciones:
Visto en el contexto de la primavera, resolvió el problema a la perfección.
|