在servlet中用spring @Autowire 注入.

今天在改版以前老应用程序的时候,发现很多系统是直接用servlet做的,当初也用到了 spring, 所以自然想到也用 spring 的 @autowire 注入 来引入 service 层, 但发现如果直接用,有时候成功,有时候报错,失败。貌似就是不稳定,一直搞不清楚原因, 后来在网上找到了一个简单的方法. 这个简单的方法也是  spring 提供的,解决方法如下:
程序代码 程序代码

public class MyServlet extends HttpServlet {

  @Autowired
  private MyService myService;

  public void init(ServletConfig config) {
    super.init(config);
    SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
      config.getServletContext());
  }
}


这样,就不会出现时而成功,时而失败了。 当然也许有人会说,还有其他方法,的确,至少还可以通过 webapplication 让后用 getBean 的方式来拿到 bean , 然后在使用.比如:
程序代码 程序代码

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        ServletContext servletContext = this.getServletContext();
        WebApplicationContext wac = null;
        wac = WebApplicationContextUtils
                .getRequiredWebApplicationContext(servletContext);
        this.setUserServiceService((UserServiceService) wac
                .getBean("userServiceService"));// Spring 配置 中的 bean id
    }


这种方式也是一样的,但没有第一种方法优雅.


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2014-08-22 10:08 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: spring servlet
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.