Spring工具类:WebApplicationContextUtils
Spring工具类:WebApplicationContextUtils
当Web应用集成Spring容器后,代表Spring容器的WebApplicationContext对象将以
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE为键存放在ServletContext的属性列表中。您当然可以直接通过以下语句获取WebApplicationContext:
WebApplicationContextwac=(WebApplicationContext)servletContext.
getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
但通过位于org.springframework.web.context.support包中的WebApplicationContextUtils工具类获取WebApplicationContext更方便:
WebApplicationContextwac=WebApplicationContextUtils.
getWebApplicationContext(servletContext);
当ServletContext属性列表中不存在WebApplicationContext时,getWebApplicationContext()方法不会抛出异常,它简单地返回null。如果后续代码直接访问返回的结果将引发一个NullPointerException异常,而WebApplicationContextUtils另一个getRequiredWebApplicationContext(ServletContextsc)方法要求ServletContext属性列表中一定要包含一个有效的WebApplicationContext对象,否则马上抛出一个IllegalStateException异常。我们推荐使用后者,因为它能提前发现错误的时间,强制开发者搭建好必备的基础设施。
实例:
publicclassdemoServletextendsHttpServlet{
IDemoWSdemoWS;
publicvoidinit()throwsServletException{
super.init();
ServletContextservletContext=this.getServletContext();
WebApplicationContextctx=WebApplicationContextUtils.getWebApplicationContext(servletContext);
demoWS=(ISignpicWS)ctx.getBean("demoWS");
}
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
.....//request.getSession().getServletContext()
}
}
-----------------------------------------------------
privateFansServicefansService=null;
if(fansService==null){
fansService=(FansService)WebApplicationContextUtils
.getRequiredWebApplicationContext(getServlet().getServletContext())
.getBean("fansService");
}