Este proyecto es un proyecto Maven basado en el marco SpringBoot.
Hoy, al manejar la lógica del interceptor en un interceptor, debe llamar a otros métodos utilizando anotaciones y leer parámetros del archivo de configuración. Entonces usé la siguiente anotación:
@Reference CoreredService RedisService; @Value ("$ {canal}") canal de cadena privada; @Value ("$ {iMiftMethod}") cadena privada permitidomethod; Una es para obtener la referencia a la interfaz, otros dos son para obtener los parámetros en el archivo de configuración.
Sin embargo, durante el proceso de depuración, descubrí que ninguno de los tres fue inyectado y la situación que se muestra en la figura a continuación ocurrió:
Puede ver que los tres valores son nulos.
Luego miré la configuración de mi proyecto para determinar si la posición del interceptor está dentro del alcance de la anotación. No encontré ningún problema. Encontré un problema en Baidu y encontré un problema: el momento en que el interceptor se carga es antes de SpringContext, por lo que se inyecta naturalmente nulo en el interceptor.
Según la solución, el interceptor se inyecta primero en la clase que configura la cadena del interceptor. El código es el siguiente:
paquete com. ***; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.interceptorRegistry; importación; org.springframework.web.servlet.config.annotation.webmvcconfigurerAdapter;/*** ConfigurationInterceptorChain* Creado por Yeguliang el 2017/10/23. */ @ConfigurationPublic Class BGQWebAppConfigurer extiende webMVCConfigurerAdapter {@Bean public bgqCommonIntercepteRorl BGQComMonIntercepEdorl () {return new BGQComMonIntercepteRL (); } public void addInterceptors (InterceptorRegistry Registry) {// múltiples interceptores forman una cadena de interceptor // addPathPatterns se usa para agregar reglas de interceptor // excludePathPatterns Exclusion Intercept Registry. super.addinterceptors (registro); }} Tenga en cuenta que el inyectado es la clase interceptor, no la clase que desea inyectar en el interceptor, y luego el registro de la cadena del interceptor.
No necesita volver a completamente el primer parámetro en él.
Después de corregir la modificación, depuración:
Como puede ver, todo se inyectó y el problema se resuelve.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.