zoukankan      html  css  js  c++  java
  • Spring源码情操陶冶-AbstractApplicationContext#postProcessBeanFactory

    阅读源码有利于陶冶情操,承接前文Spring源码情操陶冶-AbstractApplicationContext#prepareBeanFactory
    约定:web.xml中配置的contextClassXmlWebApplicationContext

    瞧瞧官方注释

    /**
    	 * Modify the application context's internal bean factory after its standard
    	 * initialization. All bean definitions will have been loaded, but no beans
    	 * will have been instantiated yet. This allows for registering special
    	 * BeanPostProcessors etc in certain ApplicationContext implementations.
    	 * @param beanFactory the bean factory used by the application context
    	 */
    

    主要承接前文中的prepareBeanFactory()方法后,供子类在标准的基础上再添加自定义的属性性质,主要是注册BeanPostProcessors

    源码简析

    对应的父类AbstractRefreshableWebApplicationContext#postProcessBeanFactory代码清单如下

    	/**
    	 *注册request/session环境
    	 * Register request/session scopes, a {@link ServletContextAwareProcessor}, etc.
    	 */
    	@Override
    	protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
    		//注册ServletContextAwareProcessor
    		beanFactory.addBeanPostProcessor(new ServletContextAwareProcessor(this.servletContext, this.servletConfig));
    		beanFactory.ignoreDependencyInterface(ServletContextAware.class);
    		beanFactory.ignoreDependencyInterface(ServletConfigAware.class);
    		//注册web环境,包括request、session、golableSession、application
    		WebApplicationContextUtils.registerWebApplicationScopes(beanFactory, this.servletContext);
    		//注册servletContext、contextParamters、contextAttributes  、servletConfig单例bean
    		WebApplicationContextUtils.registerEnvironmentBeans(beanFactory, this.servletContext, this.servletConfig);
    	}
    

    具体的调用BeanFactoryPostProcessors可见下节

    下节预告

    Spring源码情操陶冶-AbstractApplicationContext#invokeBeanFactoryPostProcessors

  • 相关阅读:
    下载安装Git,学习笔记
    php面试相关整理
    2.5 DQL 分组查询
    2.4 DQL 常见函数
    2.3 DQL 排序查询
    2.2 DQL 条件查询
    2.1 DQL 基础查询
    1.2 MySQL的介绍
    1.1 数据库的相关概念
    2019年JavaEE学习线路
  • 原文地址:https://www.cnblogs.com/question-sky/p/6760811.html
Copyright © 2011-2022 走看看