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");

}

相关推荐