Descripción del problema
Spring
En Filter注入Bean
cuando se inyecta fracaso, Bean
se ha estado vacía.
@Slf4j
@Component
public class RestAuthFilter extends FormAuthenticationFilter {
//实际注入为null
@Autowired
MobileDeviceService mobileDeviceService;
@Autowired
UserService userService;
...
}
análisis
Primavera, el orden de la aplicación web se puso en marcha: listener-> Filtro> servlet.
oyente inicializado, y luego volver a la inicialización del filtro, entonces y sólo entonces a la inicialización de nuestra dispathServlet,
Por lo tanto, cuando tenemos que inyectar una nota de frijol en el filtro, la inyección se producirá un error,
Porque cuando se inicializa el filtro, no anotada inicialización haba, no inyectado.
soluciones
Método A: Herramientas de inyección manual de
Primavera herramientas de inyección de referencia: https://shentuzhigang.blog.csdn.net/article/details/104735859
inyección manual de clase Optimizer: Método dos
https://www.liangzl.com/get-article-detail-158316.html
Método tres: la carga tectónica
1, puesto que la sección de configuración define SecurityMetadataSource utilizando configuración de carga
<beans:bean id="mySecurityMetadataSource" class="app_security.MyInvocationSecurityMetadataSource">
<beans:constructor-arg><beans:ref bean="resourceDao"/></beans:constructor-arg>
</beans:bean>
<beans:bean id="resourceDao" class="com.ipi.tyr.module.resourceModule.dao.impl.ResourceDaoImpl"></beans:bean>
2, en el securityMetadataSource clase personalizada
private ResourceDao resourceDao;
public MyInvocationSecurityMetadataSource(ResourceDao resourceDao) {
this.resourceDao = resourceDao;
loadResourceDefine();
}
Artículo de referencia
https://blog.csdn.net/hehuanchun0311/article/details/80513558
https://www.iteye.com/blog/awaitdeng-1040020
https://www.cnblogs.com/happyflyingpig/p/7998449.html