Spring中Servlet注入service時無法@Autowired自動注入的問題解決
阿新 • • 發佈:2019-01-04
今天遇到了一個問題,就是Controller層自動注入service時,一直在報空指標異常,而使用getbean卻好好的,百思不得其解,終於得到了解決的方法。
10-Dec-2018 22:21:21.619 嚴重 [http-nio-8080-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [com.ly.controller.ShowViewServlet] in context with path [/spring] threw exception java.lang.NullPointerException at com.ly.controller.ShowViewServlet.doGet(ShowViewServlet.java:44) at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
解決:
在Controllre中加入:
@Override public void init() throws ServletException { super.init(); ServletContext application = this.getServletContext(); // 解決servlet用@Autowired自動注入service失敗的問題 SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, application); }
並且在web.xml中加入:
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext*.xml</param-value> </context-param>
完美解決。