Recentemente, ao usar o ouvinte, encontrei o problema de que a mola não podia ser injetada, o código é o seguinte, essa tarefa é sempre nula, o pacote obviamente foi varrido, mas não pode ser injetado.
A razão é a seguinte: o ouvinte Listener não pode injetar o bean usando a @Resource do contêiner Spring ou o método de anotação @Autowired, porque, no contêiner do servidor web,Nem Servlet, nem Filter, nem Listener são gerenciados por contêineres Spring,Portanto, não podemos usar diretamente o método de anotação Spring nessas classes para injetar os objetos que precisamos。 Aqui, todo o ciclo de vida do servlet é tratado pelo recipiente do servlet. Se você o colocar em um recipiente Spring para criá-lo, o objeto servlet pode ser criado pelo recipiente Spring, mas o recipiente servlet pode não saber que o servlet existe porque ele não está em seu próprio recipiente. Portanto, o servlet é gerenciado pelo servidor web, não pela primavera.
Faça as seguintes modificações:
Tirado do contexto da primavera, resolveu o problema perfeitamente.
|