一、WebApplicationContext(父子上下文)
Spring会创建一个WebApplicationContext上下文,称为父上下文(父容器),保存在ServletContext中,每个DispatcherServlet有一个自己的上下文对象(WebApplicationContext)称为子上下文(子容器)。
WebApplicationContext webApplicationContext =
ContextLoader.getCurrentWebApplicationContext();
ServletContext context = webApplicationContext.getServletContext();
webApplicationContext.getBean("xx")
二、使用ClassPathXmlApplicationContext()
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
使用new ClassPathXmlApplicationContext() 它会重新装载applicationContext.xml并实例化上下文bean,如果有些线程配置类也是在这个配置文件中,那么会造成做相同工作的的线程会被启两次。一次是web容器初始化时启动,另一次是上述代码显示的实例化了一次。当于重新初始化一遍!!!!这样就产生了冗余。
三、ApplicationContextAware接口