在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
    }


这种方式也是一样的,但没有第一种方法优雅.
阅读更多
个人分类: Spring Web
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭