이 프로젝트는 SpringBoot 프레임 워크를 기반으로 한 Maven 프로젝트입니다.
오늘날, 인터셉터에서 인터셉터 로직을 처리 할 때는 주석을 사용하여 다른 메소드를 호출하고 구성 파일에서 매개 변수를 읽어야합니다. 그래서 나는 다음과 같은 주석을 사용했습니다.
@Reference CorerEdisservice Redisservice; @Value ( "$ {채널}") 개인 문자열 채널; @Value ( "$ {allowMethod}") private String allowMethod; 하나는 인터페이스에 대한 참조를 얻는 것이고, 다른 두 개는 구성 파일에서 매개 변수를 얻는 것입니다.
그러나 디버깅 과정에서 세 가지 중 어느 것도 주입되지 않았으며 아래 그림에 표시된 상황이 발생했다는 것을 알았습니다.
세 값이 모두 무효임을 알 수 있습니다.
그런 다음 프로젝트 구성을보고 인터셉터 위치가 주석의 범위 내에 있는지 확인했습니다. 나는 아무런 문제가 없었다. Baidu에서 문제를 발견하고 문제를 발견했습니다. 인터셉터로드가 SpringContext 이전의 시간이기 때문에 자연스럽게 인터셉터에 주입됩니다.
솔루션에 따르면, 인터셉터는 먼저 인터셉터 체인을 구성하는 클래스에 주입됩니다. 코드는 다음과 같습니다.
패키지 com. ***; import org.springframework.context.annotation.bean; import org.spramframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.interceporregistry; import org.springframework.web.servlet.config.annotation.webmvcconfigureradapter;/*** configurationinterceptorchain* 2017/10/23에 Yefuliang에 의해 생성되었습니다. */ @configurationPublic Class BGQWEBAPPCONFIGURER EXTENDS WEBMVCCONFIGURERADAPTER {@Bean Public BGQCOMMONINGERCEPTORL BGQCOMMONINGINGERCEPTORL () {return New BGQCommonInterceptorl (); } public void addinterceptors (interceptorregistry registry) {// 다중 인터셉터는 인터셉터 체인을 형성합니다. // addPathPatterns는 인터셉터 규칙을 추가하는 데 사용됩니다. // excludepathpatterns usercept intercept registry.addinterceptor (bgqcommoninterceptorl ()). AddPathPatterns ( "/**"); super.addinternceptors (레지스트리); }} 주입 된 것은 인터셉터에 주입하려는 클래스가 아니라 인터셉터 클래스와 인터셉터 체인의 레지스트리 (bgqcommoninterceptorl ()). AddPathPatterns ( "/**");
첫 번째 매개 변수를 다시 새롭게 할 필요가 없습니다.
수정이 수정 된 후 디버그 :
보시다시피, 모두 주입되고 문제가 해결됩니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.