ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring的Ioc容器的实例化过程详解

2021-11-27 19:00:58  阅读:114  来源: 互联网

标签:容器 初始化 对象 spring bean 详解 Spring Ioc BeanDefinition


   依然还是针对Spring面试题的内容,这次我想记录下Spring容器是如何进行bean的加载以及整个容器初始化的过程理解,都是个人看书后的理解,如有不正确的地方,欢迎指正!

   spring 的Ioc容器在通常意义上理解可以分为两类:BeanFactory 和 ApplicationContext;BeanFactory是Spring容器最初级的单位,而ApplicationContext是实现BeanFactory接口的一个针对web开发而产生的一个拥有更多spring定制功能的容器,如国际化、AOP;对于spring容器在开发中所起的作用就是将ConfigurationMetaData(配置信息,就是我们常用的Xml配置)中所有的信息包装成一个轻量化容器的过程;而这个过程我们可以简单划分为两部:1、容器的启动;2、Bean对象的实例化;

    1、容器的启动包含:将所有xml配置中的<bean>标签元素当然也包含其他标签如<import>通过BeanDefinition类(叫做bean定义信息对象)进行封装,生成对应的BeanDefinition实例对象,然后调用BeanDefinitionRegistry的register方法将BeanDefinition加入registry容器中;

     2、容器中bean的实例化:当所有beanDefinition对象都已经准备好之后,spring框架会在容器初始化时就调用getBean——》doGetBean——》createBean——》doCreateBean这个流程将所有的bean对象进行初始化过程,所有的bean对象最后存储的容器是DefaultListableBeanFactory;

概念:beanFactoryPostprocessor(容器启动阶段):BeanDefinition对象的后置处理器,在beanDefinition初始化之前,我们可以通过实现这个接口来修改对应的beanDefinition,也就是修改bean的初始定义信息;而且spring框架也为我们提供了一些beanFactoryPostprocessor的实现类,如PropertyPlaceholderConfigurer(属性占位符):在xml配置文件中我们可以把对数据库连接的动态配置抽离到properties文件中,方便后期对数据库的管理:${}美元符号这个属性占位符就可以动态加载propertis文件中有关数据库地址、用户、密码;

beanPostProcessor(bean的实例化阶段):bean对象的后置处理,在bean真正初始化之前,我们可以通过实现这个接口对bean的有关属性,或者方法进行修改,在spring中有AOP就是通过beanPostProcessor在bean创建之后创建bean的代理对象;

 

 

 

 

标签:容器,初始化,对象,spring,bean,详解,Spring,Ioc,BeanDefinition
来源: https://www.cnblogs.com/mudy2/p/15612719.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有