IOC容器启动阶段

原创 2018年04月16日 21:34:33

IOC容器要为我们提供服务需要经过两个阶段:
①容器启动阶段
②bean实例化阶段

容器启动阶段主要是在真正构造bean前,为构造工作提供图纸。就比如<bean id="..." class="...">...</bean>,这是我们人手动写的,ioc要把它转为bean的图纸:也就是转化为一个BeanDefinition,然后把BeanDefinition注册到BeanDefinitionRegistry

Spring在容器启动阶段提供了一些容器扩展点,我们可以在扩展点上做自己的一些操作,比如对BeanDefinition做一些操作。BeanFactoryPostProcessor提供了这种功能。

@FunctionalInterface
public interface BeanFactoryPostProcessor {

    /**
     * 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. (所有的BeanDifinition已经被加载,但是还没有bean被实例化)
     * This allows for overriding or adding
     * properties even to eager-initializing beans.
     * @param beanFactory the bean factory used by the application context
     * @throws org.springframework.beans.BeansException in case of errors
     */
    void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;

}

可以有多个BeanFactoryPostProcessor 先后进行处理,但是要有顺序,即实现Ordered接口。

主要几个BeanFactoryPostProcessor
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a_842297171/article/details/79967005

Spring IOC容器启动过程

IOC容器启动过程 资源定位(classpath,filesystem等) 载入,将bean定义转换为内部数据结构BeanDefintion 向IOC容器注册bean 资源定位定位配置文件,通过Bea...
  • sichenglain
  • sichenglain
  • 2016-12-18 13:41:52
  • 913

Spring IOC容器启动简介

BeanFactory和ApplicationContext都可以用来作为Bean工厂负责创建和管理Bean,相比之下ApplicationContext是BeanFactory的一个增强升级版,比如...
  • pentiumchen
  • pentiumchen
  • 2015-02-18 14:34:56
  • 1792

IoC容器在Web容器中的启动

简单的说,在web容器中,通过ServletContext为Spring的IOC容器提供宿主环境,对应的建立起一个IOC容器的体系。其中,首先需要建立的是根上下文,这个上下文持有的对象可以有业务对象,...
  • CHINADENG
  • CHINADENG
  • 2014-03-13 16:10:24
  • 1682

【Spring源码--IOC容器的实现】(一)Web容器的启动

Web环境中的SpringIOC的上下文设计,从web.xml配置一步步跟踪源码,通过清晰的注释描述IOC容器的启动过程。...
  • u013185616
  • u013185616
  • 2016-08-11 20:33:20
  • 1497

spring源码研究之IoC容器在web容器中初始化过程

前段时间在公司做了一个项目,项目用了spring框架实现,WEB容器是Tomct 5,虽然说把项目做完了,但是一直对spring的IoC容器在web容器如何启动和起作用的并不清楚。所以就抽时间看一下s...
  • liuganggao
  • liuganggao
  • 2015-03-05 15:51:50
  • 4290

Spring ioc容器启动流程

从AbstractApplicationContext的refresh()方法谈起 启动流程概览
  • Architect0719
  • Architect0719
  • 2016-11-07 17:46:41
  • 1170

IOC容器在Web容器中的创建及初始化

IoC容器的创建就是我们创建一个容器,使其拥有IoC容器的基本结构;(下文中提到的的createWebApplicationContext完成的是IoC容器的创建工作)。 在完成IoC容器创建的前提下...
  • qq_35508033
  • qq_35508033
  • 2017-12-18 10:58:20
  • 112

2 IOC容器初始化过程

IOC容器的初始化分为三个过程实现: 第一个过程是Resource资源定位。这个Resouce指的是BeanDefinition的资源定位。这个过程就是容器找数据的过程,就像水桶装水需要先找到水一样...
  • u010723709
  • u010723709
  • 2015-07-25 21:00:36
  • 1477

oracle数据库启动的四个阶段

oracle数据库启动的四个阶段,见下图: 1. 数据库处于SHUTDOWN状态 在此种状态,数据库处于停止状态。不能接受外界数据请求。使用操作系统命令ps –ef | gre...
  • xyz846
  • xyz846
  • 2012-03-03 18:06:59
  • 4695

Spring源代码分析之(二):IOC容器在web容器中的启动

以下引用自博客:http://jiwenke-spring.blogspot.com/  上面我们分析了IOC容器本身的实现,下面我们看看在典型的web环境中,Spring IOC容器是怎样被载入和起...
  • daryl715
  • daryl715
  • 2007-06-29 00:06:00
  • 1442
收藏助手
不良信息举报
您举报文章:IOC容器启动阶段
举报原因:
原因补充:

(最多只允许输入30个字)