복붙노트

[SPRING] web.xml에서 HttpServlet과 Spring Application Context를 연결하는 방법은 무엇입니까?

SPRING

web.xml에서 HttpServlet과 Spring Application Context를 연결하는 방법은 무엇입니까?

HttpServlet을 확장 한 FooServlet을 같은 프로젝트에있는 ApplicationContext와 연결하려고합니다. 응용 프로그램 컨텍스트는 Wicket Servlet에서 이미 사용하고 있습니다.

그것은

servletContext = this.getServletContext();
wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
(IMyBean)wac().getBean("myServiceBean")

이제 IoC 방식이 아니기 때문에 코드 (WebApplicationContextUtils)에서 명시 적으로 스프링 클래스를 사용하지 않도록 노력합니다.

Wicket Servlet은 web.xml의 Application 컨텍스트와 연결되어 있습니다.

<servlet>
  <servlet-name>ExampleApplication</servlet-name>
  <servlet-class>org.apache.wicket.protocol.http.WicketServlet</servlet-class>
    <init-param>
      <param-name>applicationFactoryClassName</param-name>
      <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
    </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

Spring HttpServletBean 클래스를 찾았지만 그것이 제 경우에 사용되는지는 모르겠습니다.

해결법

  1. ==============================

    1.HttpServlet에 Bean을 삽입하는 방법을 찾았습니다 (참고 : 프리젠 테이션 뷰가 필요하지 않습니다. 그렇지 않으면 고급 스프링 클래스가 있습니다)

    HttpServlet에 Bean을 삽입하는 방법을 찾았습니다 (참고 : 프리젠 테이션 뷰가 필요하지 않습니다. 그렇지 않으면 고급 스프링 클래스가 있습니다)

    Spring의 루트 WebApplicationContext가로드되도록 web.xml에 ContextLoaderListener를 추가하십시오.

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

    스프링을 사용하여 서블릿 구성 HttpRequestHandlerServlet 클래스

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

    서블릿이 org.springframework.web.HttpRequestHandler 인터페이스를 구현하게하십시오.

    Servlet을 ApplicationContext에서 Bean으로 정의하십시오 (beanID는 "servlet-name"과 같아야합니다). 이제 Dependency Lookup없이 Spring DependencyInjection 방식으로 모든 necassary Bean을 주입 할 수 있습니다.

  2. ==============================

    2.스프링 유틸리티를 사용해야한다고 생각합니다.  RequestContextUtils.getWebApplicationContext (request, application); 서블릿 내에 Spring Context를 연결한다. 이것은 DI / IoC가 아니라고 동의하지만 서블릿은 빈이 아닙니다!

    스프링 유틸리티를 사용해야한다고 생각합니다.  RequestContextUtils.getWebApplicationContext (request, application); 서블릿 내에 Spring Context를 연결한다. 이것은 DI / IoC가 아니라고 동의하지만 서블릿은 빈이 아닙니다!

  3. from https://stackoverflow.com/questions/1866953/how-to-connect-httpservlet-with-spring-application-context-in-web-xml by cc-by-sa and MIT license