核心子方法4: postProcessBeanFactory(beanFactory)方法详解

先总结: 子类覆盖方法做额外的处理,此处我们自己一般不做任何扩展工作,但是可以查看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);

    

posted @ 2024-03-01 09:49  小黑与小白  阅读(149)  评论(0)    收藏  举报