Spring中Servlet注入service时无法@Autowired自动注入的问题解决

版权声明:转载请注明作者:sust_ly https://blog.csdn.net/pycharm_u/article/details/84947638

今天遇到了一个问题,就是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>

完美解决。

猜你喜欢

转载自blog.csdn.net/pycharm_u/article/details/84947638