How to inject Spring beans into Servlets





5.00/5 (1 vote)
This can be achieved in 3 simple steps:
1. Implement HttpRequestHandler
First of all, your servlet class must implement theorg.springframework.web.HttpRequestHandler
interface 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 casemyServlet
. 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;