This can be achieved in 3 simple steps:
1. Implement HttpRequestHandler
First of all your servlet class must implement the org.springframework.web.HttpRequestHandlerinterface and provide an implementation for the handleRequest() method just like you would override doPost().
2. Declare the servlet as a Spring Bean
You can do this by either adding the @Component(“myServlet”) annotation to the class, or declaring a bean with a name myServlet in applicationContext.xml.
@Component("myServlet") public class MyServlet implements HttpRequestHandler { ...
3. Declare in web.xml a servlet named exactly as the Spring Bean
The last step is to declare a new servlet in web.xml that will have the same name as the previously declared Spring bean, in our case myServlet. The servlet class must be org.springframework.web.context.support.HttpRequestHandlerServlet.
<servlet> <display-name>MyServlet</display-name> <servlet-name>myServlet</servlet-name> <servlet-class> org.springframework.web.context.support.HttpRequestHandlerServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/myurl</url-pattern> </servlet-mapping>
Now you are ready to inject any spring bean in your servlet class.
@Component("myServlet") public class MyServlet implements HttpRequestHandler { @Autowired private MyService myService;
Recommendations
Filed under: Design Patterns, Java EE, Spring, Tips, Web Tagged: bean, dependency injection, servlets, spring, web
