How to connect HttpServlet with Spring Application Context in web.xml?

后端 未结 2 1183
死守一世寂寞
死守一世寂寞 2020-12-18 06:41

I\'m trying to connect my FooServlet which extends HttpServlet with the ApplicationContext which is in the same Project. The Application Context is already used by a Wicket

相关标签:
2条回答
  • 2020-12-18 06:58

    I found a way to inject Beans in my HttpServlet (Note: I don't need a Presentation View, otherwise there are more advanced Spring Classes)

    Add a ContextLoaderListener to web.xml so that Spring's root WebApplicationContext is loaded

       <listener>
          <listener-class>
            org.springframework.web.context.ContextLoaderListener
          </listener-class>
       </listener>
    

    Configure Servlet using Springs HttpRequestHandlerServlet Class

    <servlet>
     <servlet-name>FooServlet</servlet-name>
     <display-name>Foo Servlet</display-name>
     <servlet-class>
          org.springframework.web.context.support.HttpRequestHandlerServlet
        </servlet-class>
    </servlet>
    

    Let your Servlet implement the org.springframework.web.HttpRequestHandler Interface

    Define your Servlet as a Bean in ApplicationContext (beanID must be same as "servlet-name"). Now it's possible to inject all necassary Beans in the Spring DependencyInjection way without dependency lookup.

    0 讨论(0)
  • 2020-12-18 07:20

    I think you should use Spring utilities like RequestContextUtils.getWebApplicationContext(request, application); to hookup the Spring Context within your Servlet. Agreed this is no DI/IoC, but the servlet is no bean as well !

    0 讨论(0)
提交回复
热议问题