0
回答
Java Servlets 注入spring bean
百度AI开发者大赛带你边学边开发,赢100万奖金,加群:418589053   

Java Servlets 注入spring bean


方法一:HttpRequestHandler

此方法要实现HttpServlet,我们不能直接实现HttpServlet接口,而去实现HttpRequestHandler接口:
[java] view plain copy
  1. package com.xx.controller;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Component;  
  11. import org.springframework.web.HttpRequestHandler;  
  12.   
  13. import com.googlecode.jsonrpc4j.JsonRpcServer;  
  14.   
  15. @Component("myServlet")  
  16. public class MyServlet implements HttpRequestHandler {  
  17.   
  18.     @Autowired  
  19.     private TestManagerImpl testManagerImpl;  
  20.   
  21.     @Override  
  22.     public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  23.         String requestURI = request.getRequestURI();  
  24.         requestURI = requestURI.substring(requestURI.lastIndexOf("/") + 1);  
  25.         JsonRpcServer server = testManagerImpl.getServer(requestURI);  
  26.         server.handle(request, response);  
  27.   
  28.     }  
  29.   
  30. }  

此类被spring托管,我们用@Component("myServlet")注解方法,属性
    @Autowired
    private TestManagerImpl testManagerImpl;
   是我们需要注入的对象。

我们还需要在web.xml中配置此伪servlet:
[java] view plain copy
  1. <servlet>  
  2.     <display-name>myServlet</display-name>  
  3.     <servlet-name>myServlet</servlet-name>  
  4.     <servlet-class>  
  5.         org.springframework.web.context.support.HttpRequestHandlerServlet  
  6.     </servlet-class>  
  7. </servlet>  
  8.   
  9. <servlet-mapping>  
  10.     <servlet-name>myServlet</servlet-name>  
  11.     <url-pattern>/myurl/*</url-pattern>  
  12. </servlet-mapping>  

注意:servlet-class的配置类是:
      <servlet-class>
        org.springframework.web.context.support.HttpRequestHandlerServlet
    </servlet-class>


方法二:利用org.springframework.beans.factory.annotation.Configurable 注解与  SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this) 实现


继续阅读:http://blog.csdn.net/doctor_who2004/article/details/53996422

<无标签>
举报
Beaver_uic
发帖于2年前 0回/293阅
顶部