关闭

在servlet中用spring @Autowire 注入.

373人阅读 评论(0) 收藏 举报
分类:
今天在改版以前老应用程序的时候,发现很多系统是直接用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
    }


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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:294980次
    • 积分:5046
    • 等级:
    • 排名:第5768名
    • 原创:172篇
    • 转载:290篇
    • 译文:0篇
    • 评论:23条
    学习交流
    QQ群号:222379715
    文章分类
    最新评论