在servlet中用spring @Autowire 注入.
By:Roy.LiuLast updated:2014-08-22
今天在改版以前老应用程序的时候,发现很多系统是直接用servlet做的,当初也用到了 spring, 所以自然想到也用 spring 的 @autowire 注入 来引入 service 层, 但发现如果直接用,有时候成功,有时候报错,失败。貌似就是不稳定,一直搞不清楚原因, 后来在网上找到了一个简单的方法. 这个简单的方法也是 spring 提供的,解决方法如下:
这样,就不会出现时而成功,时而失败了。 当然也许有人会说,还有其他方法,的确,至少还可以通过 webapplication 让后用 getBean 的方式来拿到 bean , 然后在使用.比如:
这种方式也是一样的,但没有第一种方法优雅.
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 }
这种方式也是一样的,但没有第一种方法优雅.
From:一号门
COMMENTS