spring bean注册和实例化



1.左边3个接口定义了基本的Ioc容器的
2.HierarchicalBeanFactory增加了getParentBeanFactory()具备了双亲Ioc的管理能力
3.ConfigurableBeanFactory定义了一些对BeanFactory的配置功能,如setParentBeanFactory(),
addBeanPostProcessor()
4.比较代表性的是DefaultListableBeanFactory实际上包含了基本IOC容器所具有的重要功能。
1.右边以ApplicationContext为核心
2.ListableBeanFactory接口中,细化了许多BeanFactory的功能,比如定义了getBeanDefinitionName()
3.另外通过继承MessageSource,ResourceLoader,ApplicationEventPublish添加了许多高级容器的特性























IOC容器的初始化完成的主要工作是在IOC容器中建立BeanDefinition数据映射。在此过程中并没有看到IOC容器对Bean依赖关系进行注入。
依赖注入的过程是用户第一次向IOC容器索要Bean时触发的。当然也有例外,也就是我们可以在BeanDefinition信息中通过控制lazy-init属性来让容器完成对Bean的预实例化。
看一下AbstractBeanFactory对getBean的实现:









依赖注入发生在createBeanInstance之后:





看下post和initial:





spring bean注册和实例化的更多相关文章
- Spring Bean注册解析(二)
在上文Spring Bean注册解析(一)中,我们讲解了Spring在注册Bean之前进行了哪些前期工作,以及Spring是如何存储注册的Bean的,并且详细介绍了Spring是如何解析 ...
- Spring Bean注册解析(一)
Spring是通过IoC容器对Bean进行管理的,而Bean的初始化主要分为两个过程:Bean的注册和Bean实例化.Bean的注册主要是指Spring通过读取配置文件获取各个bean的 ...
- Spring Bean注册和加载
Spring解密 - XML解析 与 Bean注册 Spring解密 - 默认标签的解析 Spring解密 - 自定义标签与解析 Spring解密 - Bean的加载流程
- spring bean注册之bean工厂方式
一般我们在spring中注册一个bean,直接 <bean id="websocket" class="com.sdyy.common.spring.websock ...
- 09.Spring Bean 注册 - BeanDefinitionRegistry
基本概念 BeanDefinitionRegistry ,该类的作用主要是向注册表中注册 BeanDefinition 实例,完成 注册的过程. 它的接口定义如下: public interface ...
- Spring bean注册
DefaultListableBeanFactory中: DefaultListableBeanFactory实现了BeanDefinitionRegistry,这个接口的实现完成BeanDefini ...
- Spring bean到底是如何创建的?(上)
前言 众所周知,spring对于java程序员来说是一个及其重要的后端框架,几乎所有的公司都会使用的框架,而且深受广大面试官的青睐.所以本文就以常见的一个面试题"spring bean的生命 ...
- Spring Bean生命周期详解
对象生命周期:创建(实例化----初始化)---使用----销毁,而在Spring中,Bean对象周期当然遵从这一过程,但是Spring提供了许多对外接口,允许开发者对三个过程(实例化.初始化.销毁) ...
- 【Spring】Spring bean的实例化
Spring实现HelloWord 前提: 1.已经在工程中定义了Spring配置文件beans.xml 2.写好了一个测试类HelloWorld,里面有方法getMessage()用于输出" ...
随机推荐
- 企业级数据大屏设计如何实现,div+html+echarts
大屏是什么? 大屏设计是最近比较流行的概念,一般按照功能来分有几种: 1. 可交互的触摸屏,大多运用在互动教学课程或者报告演示现场,用户可结合交互操作来阐述具体内容.设计师需要对交互形式和传达内容作统 ...
- 免费申请HTTPS通配符证书
前言 在阿里云买了一个域名giantliu.cn 部署了自己的博客系统 https://www.giantliu.cn/ 所有用https证书是Let's Encrypt免费申请的 因为申请的免费证书 ...
- ArrayList扩容机制
一.先从 ArrayList 的构造函数说起 ArrayList有三种方式来初始化,构造方法源码如下: 1 /** 2 * 默认初始容量大小 3 */ 4 private static final i ...
- html+canvas实现很真实的下雨雨落
原素材地址:http://www.htmlsucai.com/demo-9782.html <!DOCTYPE html> <html> <head> <me ...
- React react-redux props或state更新视图无法重新渲染问题
记录学习React时自己是如何挖坑把自己埋了的过程:children以及其它props被修改时相关组件无法重新渲染(做了两天) 父组件代码: class UserHome extends Compon ...
- Socket bind系统调用简要分析
主要查看linux kernel 源码:Socket.c 以及af_inet.c文件 1.1 bind分析 #include <sys/types.h> /* See NOTES */#i ...
- dst_output发包
不管是收到报文转发还是本机发送报文,最后都会调用dst_output /* Output packet to network from transport. */ static inline int ...
- 利用c++ std::getline实现split
getline reads characters from an input stream and places them into a string: getline从输入流中读取字符, 并把它们转 ...
- struts.xml中的配置内容
一些常量的配置 包标签 拦截器标签(自定义拦截器,拦截器栈) //对待拦截器栈与拦截器是一样的,只是标签不同而已. global-results标签 action标签:拦截器标签,resu ...
- git操作之二:git restore
在上篇博客中留了一个问题,那就是git restore命令是做什么的,下面重点分析. 一.概述 git restore命令是撤销的意思,也就是把文件从缓存区撤销,回到未被追踪的状态. 该命令有git ...