彩票走势图

Spring架构详解(6):IOC容器的构建

转帖|行业资讯|编辑:郝浩|2016-02-23 10:42:47.000|阅读 539 次

概述:Ioc容器实际上就是Context组件结合其他两个组件共同构建了一个Bean关系网,本篇讲解了如何构建这个关系网。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Ioc容器实际上就是Context组件结合其他两个组件共同构建了一个Bean关系网,如何构建这个关系网?构建的入口就在AbstractApplicationContext类的refresh方法中。这个方法的代码如下:

public void refresh() throws BeansException, IllegalStateException {    
 
    synchronized (this.startupShutdownMonitor) {    
 
        // Prepare this context for refreshing.    
 
        prepareRefresh();    
 
        // Tell the subclass to refresh the internal bean factory.    
 
        ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();    
 
        // Prepare the bean factory for use in this context.    
 
        prepareBeanFactory(beanFactory);    
 
        try {  
 
            // Allows post-  processing of the bean factory in context subclasses.  
 
            postProcessBeanFactory(beanFactory);  
 
            // Invoke factory processors registered as beans in&  nbsp;the context.  
 
            invokeBeanFactoryPostProcessors(beanFactory);    
 
            // Register bean processors that intercept bean crea  tion.  
 
            registerBeanPostProcessors  (beanFactory);  
 
            // Initialize message source for this context.    
 
            initMessageSource();    
 
            // Initialize event multicaster for this context.    
 
            initApplicationEventMulticaster();    
 
            // Initialize other special beans in specific contex  t subclasses.  
 
            onRefresh();    
 
            // Check for listener beans and register them.    
 
            registerListeners();    
 
            // Instantiate all remaining (non-lazy-init) singletons.    
 
            finishBeanFactoryInitialization  (beanFactory);  
 
            // Last step: publish corresponding event.    
 
            finishRefresh();    
 
        }  
 
        catch (BeansException ex) {  
 
            // Destroy already created singletons to avoid dangl  ing resources.  
 
            destroyBeans();    
 
            // Reset 'active' flag.    
 
            cancelRefresh(ex);    
 
            // Propagate exception to caller.    
 
            throw ex;    
 
        }  
 
    }  
 
}  
 

这个方法就是构建整个Ioc容器过程的完整的代码,了解了里面的每一行代码基本上就了解大部分Spring的原理和功能了。

这段代码主要包含这样几个步骤:

  • 构建BeanFactory,以便于产生所需的“演员”
  • 注册可能感兴趣的事件
  • 创建Bean实例对象
  • 触发被监听的事件

下面就结合代码分析这几个过程。

第二三句就是在创建和配置BeanFactory。这里是refresh也就是刷新配置,前面介绍了Context有可更新的子类,这里正是实现这个功能,当BeanFactory已存在是就更新,如果没有就新创建。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP