Quantcast
Channel: Active questions tagged servlets - Stack Overflow
Viewing all articles
Browse latest Browse all 717

Why Spring Dependency Injection @Autowired throws NullPointerException in a servlet?

$
0
0

Project Structure:

enter image description here

TestController.java:

package com.mypack;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;/** * Servlet implementation class Test */@WebServlet("/test")@Controllerpublic class TestController extends HttpServlet {    private static final long serialVersionUID = 1L;    @Autowired    private TestManager testManager;    public TestManager getTestManager() {        return testManager;    }    public void setTestManager(TestManager testManager) {        this.testManager = testManager;    }    public TestController() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.getWriter().append("Served at: ").append(request.getContextPath());        String name=testManager.getName();        PrintWriter pw=response.getWriter();        pw.write(name);    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }}

TestManager.java:

package com.mypack;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Configurable;import org.springframework.stereotype.Service;@Service("testManager")public class TestManager {    @Autowired    private TestDao testDao;    public String getName(){        return testDao.getName();    }    public TestDao getTestDao() {        return testDao;    }    public void setTestDao(TestDao testDao) {        this.testDao = testDao;    }}

TestDao.java:

package com.mypack;import org.springframework.stereotype.Repository;@Repository("testDao")public class TestDao {    public String getName(){        return "Randhir";    }}

spring.xml:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-2.5.xsd"><!-- Enable Spring Application Context --><context:spring-configured /><!-- Scan class file in class path for annotated component -> @Component, @Repository, @Service, and @Controller  --><context:component-scan base-package="com.mypack" /></beans>

web.xml:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"><display-name>SpringIOCWeb</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>        /WEB-INF/spring.xml</param-value></context-param></web-app>

Server Console:

INFO: 1 Spring WebApplicationInitializers detected on classpathJan 21, 2017 7:50:39 PM org.apache.catalina.core.ApplicationContext logINFO: Initializing Spring root WebApplicationContextJan 21, 2017 7:50:39 PM org.springframework.web.context.ContextLoader initWebApplicationContextINFO: Root WebApplicationContext: initialization startedJan 21, 2017 7:50:39 PM org.springframework.context.support.AbstractApplicationContext prepareRefreshINFO: Refreshing Root WebApplicationContext: startup date [Sat Jan 21 19:50:39 IST 2017]; root of context hierarchyJan 21, 2017 7:50:39 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsINFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/spring.xml]Jan 21, 2017 7:50:40 PM org.springframework.web.context.ContextLoader initWebApplicationContextINFO: Root WebApplicationContext: initialization completed in 731 msJan 21, 2017 7:50:40 PM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["http-nio-8090"]Jan 21, 2017 7:50:40 PM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["ajp-nio-8009"]Jan 21, 2017 7:50:40 PM org.apache.catalina.startup.Catalina startINFO: Server startup in 2836 msJan 21, 2017 7:50:45 PM org.apache.catalina.core.StandardWrapperValve invokeSEVERE: Servlet.service() for servlet [com.mypack.TestController] in context with path [] threw exceptionjava.lang.NullPointerException    at com.mypack.TestController.doGet(TestController.java:43)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)    at java.lang.Thread.run(Thread.java:724)

The IOC Container will instantiate the bean and assign the object reference using a setter method. Is my concept right?

But here @Autowired doesn't assign the object reference.

I have used a main method with ApplicationContext and getBean() to learn Spring.

But how the bean configuration works with servlet?


Viewing all articles
Browse latest Browse all 717

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>