Ce projet est un projet Maven basé sur le cadre Springboot.
Aujourd'hui, lors de la gestion de la logique d'interception dans un intercepteur, vous devez appeler d'autres méthodes à l'aide d'annotations et de lecture des paramètres à partir du fichier de configuration. J'ai donc utilisé l'annotation suivante:
@Reference CoreredisService Redesservice; @Value ("$ {canal}") Channel de chaîne privée; @Value ("$ {allatMethod}") String privé AllowMethod; L'une consiste à obtenir la référence à l'interface, deux autres sont pour obtenir les paramètres dans le fichier de configuration.
Cependant, pendant le processus de débogage, j'ai constaté qu'aucune des trois n'avait été injectée et que la situation représentée dans la figure ci-dessous ne s'est produite:
Vous pouvez voir que les trois valeurs sont nuls.
J'ai ensuite examiné la configuration de mon projet pour déterminer si la position de l'intercepteur est dans le cadre de l'annotation. Je n'ai trouvé aucun problème. J'ai trouvé un problème sur Baidu et j'ai trouvé un problème: le moment où l'intercepteur charge est avant SpringContext, il est donc naturellement nul injecté dans l'intercepteur.
Selon la solution, l'intercepteur est d'abord injecté dans la classe qui configure la chaîne d'intercepteur. Le code est le suivant:
package com. ***; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.interceptorregistry; org.springframework.web.servlet.config.annotation.webmvcconfigurerAdapter; / ** * ConfigurationInterceptorChain * créé par Yefuriang le 2017/10/23. * / @ ConfigurationPublic classe BGQWEBAppConfigurer étend webmvcconfigurerAdapter {@bean public bgqcommonInterceptorl bgqCommonInterceptorl () {return new BGQComMonInterceptorl (); } public void addInterceptors (InterceptorRegistry Registry) {// plusieurs intercepteurs forment une chaîne d'interceptor // addPathPatterns est utilisée pour ajouter des règles d'interceptor // excludepathpatterns utilisateur Intercept registry.addinterceptor (bgqCommonInterceptorl ()). AddPathPatterns ("/ **"); super.addinterceptors (registre); }} Notez que l'injection est la classe d'interceptor, pas la classe que vous souhaitez injecter dans l'intercepteur, puis le registre de la chaîne intercepteur.addinterceptor (bgqComMonInterceptorl ()). AddPathPatterns ("/ **");
Vous n'avez pas besoin de recommencer le premier paramètre.
Une fois la modification corrigée, débogue:
Comme vous pouvez le voir, tous injectés et le problème est résolu.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.