1、提供一个util类获取spring容器中的对象。GetBeanUtil,该类实现ApplicationContextAware
package utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
//使用该方法的时候注意加载器是否是同一个
public class GetBeanUtil implements ApplicationContextAware{
public static ApplicationContext context;
//实现方法,在bean容器初始化的时候会自动注入 Application对象
public void setApplicationContext(ApplicationContext paramApplicationContext)
throws BeansException {
context = paramApplicationContext;
}
//提供静态的方法获取bean对象
public static <T> T getBean(String id,Class clazz){
System.out.println(context+">>>>>>>>>>>>>>>>>>>>>>>>>>>");
T bean = (T) context.getBean(id, clazz);
return bean;
}
}
2、在beans.xml中注册GetBeanUtil类(使用注解),spring容器初始化的时候回将Application对象注入到GetBeanUtil工具类中
<bean id = "util" class = "utils.GetBeanUtil"/>
3、直接调用GetBeanUtil.getBean("user",User.class) 获取spring容器中的user对象
二、通过servletContext获取application对象
当 Web 应用集成 Spring 容器后,代表 Spring 容器的WebApplicationContext对象将以
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE 为键存放在ServletContext的属性列表中。您当然可以直接通过以下语句获取 WebApplicationContext:
WebApplicationContext wac = (WebApplicationContext)servletContext.
getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
但通过位于 org.springframework.web.context.support 包中的WebApplicationContextUti
WebApplicationContext wac =WebApplicationContextUti
getWebApplicationContext
当 ServletContext 属性列表中不存在 WebApplicationContext 时,getWebApplicationContext
public class DemoServlet extends HttpServlet {
public void init() throws ServletException {
super.init();
ServletContext servletContext = this.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(servletContext);
demoWS = (ISignpicWS) ctx.getBean("demoWS");
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}