Este projeto é um projeto Maven baseado na estrutura de trampolim.
Hoje, ao manusear a lógica do interceptador em um interceptador, você precisa chamar outros métodos usando anotações e ler parâmetros do arquivo de configuração. Então eu usei a seguinte anotação:
@Reference CoredisService RedisService; @Value ("$ {canal}") Private String Channel; @Value ("$ {allowMethod}") String privada AllowMethod; Uma é obter a referência à interface, dois outros dois devem obter os parâmetros no arquivo de configuração.
No entanto, durante o processo de depuração, descobri que nenhum dos três foi injetado e a situação mostrada na figura abaixo ocorreu:
Você pode ver que todos os três valores são nulos.
Eu então olhei para a configuração do meu projeto para determinar se a posição do interceptador está dentro do escopo da anotação. Não encontrei nenhum problema. Encontrei um problema no Baidu e encontrei um problema: o momento em que o interceptador é antes do SpringContext, por isso é naturalmente injetado no interceptador.
De acordo com a solução, o interceptador é injetado pela primeira vez na classe que configura a cadeia interceptadora. O código é o seguinte:
pacote com. ***; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.web.servlet.config.annotation.interptionRegistry; importar org.springframework.web.servlet.config.annotation.webmvcConfigureRAdApter;/*** ConfigurationInterceptchain* Criado por Yefuliang em 2017/10/10/23. */ @ConfigurationPublic Classe BGQWebAppConfigurer estende webmvcConfigureRAdApter {@Bean public BGQCommonInterceptorl BGQComMoninterceptl () {Return BGQCommonInterceptl (); } public void addinterceptores (Registro de InterceptorRegistry) {// Múltiplos interceptores formam uma cadeia interceptor // addPathPatterns é usado para adicionar regras interceptadoras // excludEpathpatterns exclusão de usuário intercept registry.addintercept (BGQCommonintercetorl (). super.addinterceptores (Registro); }} Observe que o injetado é a classe interceptadora, não a classe que você deseja injetar no interceptador e, em seguida, o registro da cadeia interceptores.Addintercept (BGQCommonInterceptorl ()). AddPathPatterns ("/**");
Você não precisa renovar o primeiro parâmetro nele.
Depois que a modificação é corrigida, Debug:
Como você pode ver, tudo injetado nele e o problema é resolvido.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.