복붙노트

[SPRING] 서블릿에서의 Autowiring

SPRING

서블릿에서의 Autowiring

서블릿에서 스프링 autowiring을 사용하고자하므로 여기에 내 코드가있다 :

@Configurable
public class ImageServlet extends HttpServlet {

   @Autowired
   private SystemPropertyDao systemPropertyDao;

   @Override
   public void init() throws ServletException {


   String imagePath = systemPropertyDao.findByID(StaticParam.CONTENT_FOLDER);

}

SystemPropertyDao에는 @Repository가 주석으로 표시됩니다.

및 내 applicationContext.xml :

<context:component-scan base-package="com.basepackage" />
<mvc:annotation-driven />
<context:annotation-config />
<context:spring-configured/>

веб.хмл :

  <servlet>
    <servlet-name>imageServlet</servlet-name>
    <servlet-class>com.xeno.basepackage.ImageServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>imageServlet</servlet-name>
    <url-pattern>/myimages/*</url-pattern>
  </servlet-mapping>

때로는 autowiring 작품과 때로는 (봄 콩 systemPropertyDao에 대한 참조 null이 있습니다), 아무도 내가 뭔가를 놓치고 말해 줄래?

해결법

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

    1.나는 다음의 링크에서 해결책을 따라 갔다. JBoss의 서블릿에서 Spring 빈에 접근하기

    나는 다음의 링크에서 해결책을 따라 갔다. JBoss의 서블릿에서 Spring 빈에 접근하기

    public class MyServlet extends HttpServlet {
    
      @Autowired
      private MyService myService;
    
      public void init(ServletConfig config) {
        super.init(config);
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
          config.getServletContext());
      }
    }
    
  2. ==============================

    2.서블릿에서 @Configurable 어노테이션을 제거하고 다음을 추가하십시오.

    서블릿에서 @Configurable 어노테이션을 제거하고 다음을 추가하십시오.

    SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext (this);
    

    init () 메소드의 첫 번째 줄에.

  3. from https://stackoverflow.com/questions/11843690/autowiring-in-servlet by cc-by-sa and MIT license