ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,ApplicationContext则是“应用的容器”了,Spring把Bean放在这个容器中,在需要的时候,用getBean方法取出。
WebApplicationContext继承自ApplicationContext,webApplicationContext(也有可能是其父context,而正真 的webApplicationContext是由DispatcherServlet初始化的。)是由 contextLoaderListener或者contextLoaderServlet加载web.xml中的param参数 contextConfigLocation初始化的。
过滤器中无法用spring注入,当想得到bean时只能手动获取ApplicationContext,如ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");但这样会重新加载spring配置文件,这样会极大影响性能所以我们可在session中取出webApplicationContext从而获取bean实例
当Servlet初始化了webApplicationContext后,即可在ServletContext取出
WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(req.getSession().getServletContext());
ctx.getBean("");