springbootインターセプタ失敗したインスタンスの注入豆

  それは春にサービスインターセプタを注入した場合は、ヌルポインタタイムズの実行結果:

2020年までに - 01 - 03  092633.646 | -DEBUG [HTTP-nio- 9988 -exec- 3 ] org.springframework.web.servlet.DispatcherServlet [ 1100 ] - | 完全な要求に失敗しました:java.lang.NullPointerExceptionが
 2020年までに - 01 - 03  092633.648 | -ERROR [HTTP-nio- 9988 -exec- 3 ] org.apache.catalina.core.ContainerBase [Tomcatの] [localhostを。 ] [/] [のDispatcherServlet] [。。175 ] - | Servlet.service()のためのサーブレット[のDispatcherServlet]例外投げパス[]とコンテキスト[リクエストの処理に失敗しました。ネストされた例外はある原因ルートとjava.lang.NullPointerExceptionが]
 :java.lang.NullPointerExceptionがヌル
    com.wlf.order.prize.aop.RequestInterceptor.postHandle(RequestInterceptor.java:で118 
    でorg.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:156 
    org.springframework.web.servlet.DispatcherServlet.doDispatchで(DispatcherServlet.java:1046 
    org.springframework.web.servlet.DispatcherServlet.doServiceで(DispatcherServlet.java:942 
    org.springframework.web.servlet.FrameworkServlet.processRequestで(FrameworkServlet.java:1005 
    org.springframework.web.servlet.FrameworkServlet.doPostで(FrameworkServlet.java:908 
    javax.servlet.http.HttpServlet.serviceで(HttpServlet.java:660 
    org.springframework.web.servlet.FrameworkServlet.serviceで(FrameworkServlet.java:882 
    javax.servlet.http.HttpServlet.serviceで(HttpServlet.java:741 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilterで(ApplicationFilterChain.java:231 
    org.apache.catalina.core.ApplicationFilterChain.doFilterで(ApplicationFilterChain.java:166 
    org.apache.tomcat.websocket.server.WsFilter.doFilterで(WsFilter.java:53 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilterで(ApplicationFilterChain.java:193 
    org.apache.catalina.core.ApplicationFilterChain.doFilterで(ApplicationFilterChain.java:166 
    org.springframework.web.filter.RequestContextFilter.doFilterInternalで(RequestContextFilter.java:99 
    org.springframework.web.filter.OncePerRequestFilter.doFilterで(OncePerRequestFilter.java:118 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilterで(ApplicationFilterChain.java:193 
    org.apache.catalina.core.ApplicationFilterChain.doFilterで(ApplicationFilterChain.java:166 
    でorg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92 
    org.springframework.web.filter.OncePerRequestFilter.doFilterで(OncePerRequestFilter.java:118 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilterで(ApplicationFilterChain.java:193 
    org.apache.catalina.core.ApplicationFilterChain.doFilterで(ApplicationFilterChain.java:166 
    org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternalで(HiddenHttpMethodFilter.java:93 
    org.springframework.web.filter.OncePerRequestFilter.doFilterで(OncePerRequestFilter.java:118 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilterで(ApplicationFilterChain.java:193 
    org.apache.catalina.core.ApplicationFilterChain.doFilterで(ApplicationFilterChain.java:166 
    でorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200 
    org.springframework.web.filter.OncePerRequestFilter.doFilterで(OncePerRequestFilter.java:118 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilterで(ApplicationFilterChain.java:193 
    org.apache.catalina.core.ApplicationFilterChain.doFilterで(ApplicationFilterChain.java:166 
    でorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202 
    でorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96 
    でorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490 
    でorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139 
    でorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92 
    でorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74 
    でorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343 
    org.apache.coyote.http11.Http11Processor.serviceで(Http11Processor.java:408 
    でorg.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66 
    でorg.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:853 
    でorg.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1587 
    でorg.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49 
    java.util.concurrent.ThreadPoolExecutor.runWorkerで(ThreadPoolExecutor.java:1142 
    でjava.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617 
    でorg.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61 
    :java.lang.Thread.run(Thread.javaにおける745 2020 - 01 - 03  092633.657 [HTTP-nio- -DEBUG | 9988 -exec- 3 ] org.springframework.web.servlet.DispatcherServlet [ 91 ] - | " INCLUDE "ディスパッチするための POST " /エラー"、パラメータ= {}
 2020 - 01 - 03  092633.661 | [HTTP-nio- -DEBUGを9988 -exec- 3] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping [ 420 ] - | マッピングされた公共 org.springframework.http.ResponseEntity <java.util.Map <java.lang.Stringで、java.lang.Objectの>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javaxの。 servlet.http.HttpServletRequest)
 2020年までに - 01 - 03  092633.662 | -DEBUG [HTTP-nio- 9988 -exec- 3 ] org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor [ 86 ] - | JPA EntityManagerを開くOpenEntityManagerInViewInterceptor
2020年までに - 01 - 03  092633.664 | -DEBUG [HTTP-nio- 9988 -exec- 3 ] org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor [ 223 ] - | 発見' のContent-Type:アプリケーション/ JSON;のcharset = UTF-8 '  応じて
 2020年までに - 01 - 03  092633.669 | -DEBUG [HTTP-nio- 9988 -exec- 3 ] org.springframework.web.servlet。 mvc.method.annotation.HttpEntityMethodProcessor [ 91] - | [{タイムスタンプ=金月書込み03  092633 CST 2020、ステータス= 200、誤差= OK、メッセージ=なしメッセージ、パス= / J(切り捨て)...]
 2020 - 01 - 03  092633.685 | -DEBUG [HTTP-nio- 9988 -exec- 3 ] org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor [ 111 ] - | JPA EntityManagerを閉じる OpenEntityManagerInViewInterceptor

 

  RequestInterceptor.java 118ラインを見にログプロンプトによると:

 

 

  私たちは、@Autowired mailserviceとは、インスタンス化を通じて注入が来なかったことがわかりました。

 

 

  mailserviceと自体は、春のコンテナ管理であります

 

 

  制御ばねコンテナの範囲内のルックスは、なぜそれをインスタンス化しませんか?インターセプタがインスタンス化される方法を見てする必要があります

 

 

  很明显,这里对拦截器的实例化并不在spring容器的管控之内,它是new出来的。由此可以推断,我们只需要把拦截器的实例化让spring容器来做即可,也就是放开上面注掉的代码

 

 

  再次调用接口,拦截器的实例化交给了spring容器,容器自会管理起mailService的注入,再无空指针异常。

おすすめ

転載: www.cnblogs.com/wuxun1997/p/12143415.html