先总结: 子类覆盖方法做额外的处理,此处我们自己一般不做任何扩展工作,但是可以查看web中的代码,是有具体实现的
AnnotationConfigWebApplicationContext -> AbstractRefreshableWebApplicationContext的实现:
1.设置ServletContextAwareProcessor后处理器, 并设置忽略ServletContextAware和ServletConfigAware, 在ServletContextAwareProcessor后处理器中进行处理
beanFactory.addBeanPostProcessor(new ServletContextAwareProcessor(this.servletContext, this.servletConfig));
beanFactory.ignoreDependencyInterface(ServletContextAware.class);
beanFactory.ignoreDependencyInterface(ServletConfigAware.class);
--> ServletContextAwareProcessor后处理器的核心代码:
2.注册特定于web的作用域(“请求”、“会话”、“globalSession”、“应用程序”)("request", "session", "globalSession", "application")
WebApplicationContextUtils.registerWebApplicationScopes(beanFactory, this.servletContext);
3.向给定的BeanFactory注册特定于web的环境的bean(“contextParameters”、“contextAttributes”),如: WebApplicationContext中所使用的
WebApplicationContextUtils.registerEnvironmentBeans(beanFactory, this.servletContext, this.servletConfig);
标签:web,beanFactory,postProcessBeanFactory,ServletContextAwareProcessor,详解,处理器,servl From: https://www.cnblogs.com/superpiter/p/18046302