1、BeanFactory和FactoryBean

BeanFactory是一个接口类,定义了IOC容器最基本的形式,提供了IOC容器所应该遵守的基本服务契约。

FactoryBean是一个能产生或者修饰对象生成的工厂Bean,实现方式与工厂模式和修饰器模式类似。

2、getBean()

getBean()方法是使用IOC容器API的主要方法,可以通过指定名字的索引来获取IOC容器的Bean。

3、BeanFactory的设计原理

4、ApplicationContext

ApplicationContext除了可以提供容器的那些基本功能外,还为用户提供了各种附加服务。

MessageSource,支持国际化,为开发多语言版本应用提供服务。

访问资源更加方便。

支持应用事件,继承了接口ApplictionEventPublisher,在上下文中引入了事件机制。

在ApplicationContext提供附加服务,使IOC容器的工能更加丰富。

5、IOC容器的初始化

IOC容器的初始化是通过refresh()f方法来启动的,这个方法是用来启动IOC容器,IOC容器的启动过程:BeanDefinition的资源Resource定位、载入和注册。

Spring将这三个过程分离,分别用不同的模块进行,使用户可以更加方便的适合自己的IOC容器的初始化过程。

(1)Resource定位

由ResourceLoader通过统一的Resource接口来实现的,这个Resource接口对各种Definition定义了统一的接口。

(2)BeanDefinition的载入

BeanDefinition就是的普通的POJO的抽象表示,通过BeanDefinition定义的数据结构,是IOC容器可以更加方便的管理Bean。

(3)向IOC容器注册BeanDefinition

通过调用BeanDefinitionRegistry接口的实现来完成的,把载入过程中解析到的BeanDefinition在IOC容器中注入到一个HashMap中,IOC容器通过HashMap来持有这些BeanDefinition。

IOC的初始化过程不包含依赖注入,依赖注入发生在第一次通过getBean()从容器中获取Bean的时候。我们可以通过对预实例化的配置来规定依赖注入的发生时间。

Spring学习(三)--Spring的IOC的更多相关文章

  1. spring学习(三) ———— spring事务操作

    前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...

  2. Spring学习(三)-----Spring自动装配Beans

    在Spring框架,可以用 auto-wiring 功能会自动装配Bean.要启用它,只需要在 <bean>定义“autowire”属性. <bean id="custom ...

  3. Spring学习(六)-----Spring使用@Autowired注解自动装配

    Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...

  4. Spring Boot 项目学习 (三) Spring Boot + Redis 搭建

    0 引言 本文主要介绍 Spring Boot 中 Redis 的配置和基本使用. 1 配置 Redis 1. 修改pom.xml,添加Redis依赖 <!-- Spring Boot Redi ...

  5. Spring学习(十一)-----Spring使用@Required注解依赖检查

    Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...

  6. Spring学习(一) IoC

      文章部分图片来自参考资料,本文介绍的是 Spring 的两个重要概念,是学习总结. 我们依旧提出几个问题,帮助我们在学习中带着问题解答. 问题 : 如何理解Ioc,它解决了什么难题(或者说是使用它 ...

  7. Spring学习(一)IOC

     Spring是一站式框架: (1)Spring在javaee三层结构中,每一层都提供不同的解决技术. web层:SpringMVC service层:Spring的Ioc dao层:Spring的J ...

  8. Spring学习(一):理解IoC容器

    序言 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词的解释.最近空来整理了一下Spring中Io ...

  9. Spring学习三----------注入方式

    © 版权声明:本文为博主原创文章,转载请注明出处 Spring注入方式 本篇博客只讲最常用的两种注入方式:设值注入和构造器注入.代码为完整代码,复制即可使用. 1.目录结构 2.pom.xml < ...

  10. spring学习 三 框架的搭建

    1 导入jar包 spring启来最少要5个包,四个核心包和一个依赖的日志包 2 创建配置文件 在dynamic web project下的src目录下,创建一个spring的xml配置文件,名称可以 ...

随机推荐

  1. Oracle-Over()函数高级用法

  2. Centos7安装Oracle12c教程

    12c数据库 创建oracle的系统用户和用户组 [root@localhost /]# groupadd oinstall [root@localhost /]# groupadd dba [roo ...

  3. DevExpress的WidgetView的使用介绍

    很多程序可能都会有一个首页综合展示系统的相关信息,如汇总信息,图表统计.待办业务.提醒信息等内容,在Web上可能叫做Dashboard仪表板,或者首页页面,不管哪种叫法,都是综合展示一些信息,提供一些 ...

  4. AOP理论

    目录 AOP理论 什么是AOP 那Spring AOP,AspectJ又是啥呢? 为什么说AOP是OOP的补充和完善呢? 应用场景举例 AOP的优点 AOP的术语整理 AOP理论 什么是AOP AOP ...

  5. 深入了解Kafka【二】工作流程及文件存储机制

    1.Kafka工作流程 Kafka中的消息以Topic进行分类,生产者与消费者都是面向Topic处理数据. Topic是逻辑上的概念,而Partition是物理上的概念,每个Partition分为多个 ...

  6. openshift 4.3中安装helm3并通过helm方式部署应用

    openshift 4.3中安装helm3并通过helm方式部署应用 简介 Helm是一个命令行界面(CLI)工具,可简化将应用程序和服务部署到OpenShift Container Platform ...

  7. Activiti7 启动流程实例

    package com.itheima.activiti; import org.activiti.engine.ProcessEngine; import org.activiti.engine.P ...

  8. 用C、python手写redis客户端,兼容redis集群 (-MOVED和-ASK),快速搭建redis集群

    想没想过,自己写一个redis客户端,是不是很难呢? 其实,并不是特别难. 首先,要知道redis服务端用的通信协议,建议直接去官网看,博客啥的其实也是从官网摘抄的,或者从其他博客抄的(忽略). 协议 ...

  9. Linux:apache第一个简单的站点

    前提: apache安装目录再/application/apache/ 1.先进入安装目录中 cd /application/apache/ ls 查看目录中的内容 可以看到好多我们常见的文件夹,bi ...

  10. VSM

    好吧,在被这个算法折腾了许多天之后,我终于对它竖起了中指.这几天的经历让我明白了一个道理:对于数学基础不好的人来说,对待图形学最好远观不可亵玩焉:如果坚持硬闯却又碰巧E文不咋地,那受罪程度真叫人生不如 ...