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. 01.arduino uno开发板入门

    01.所需工具 -Ariduino uno开发板一块 -对应的usb数据线 -杜邦线若干 -一些用以测试的电子元器件 02.安装arduino IDE 打开官网链接https://www.arduin ...

  2. 程序员必知必会Git的小知识

    单人开发 1.初始化一个仓库 git init //cd到你工作的文件夹,初始化git仓库,默认会生成.git隐藏目录 2.配置自己的信息(Git 不喜欢不愿透漏姓名的人) git config -- ...

  3. Redis秒杀实战-微信抢红包-秒杀库存,附案例源码(Jmeter压测)

    导读 前二天我写了一篇,Redis高级项目实战(点我直达),SpringBoot整合Redis附源码(点我直达),今天我们来做一下Redis秒杀系统的设计.当然啦,Redis基础知识还不过关的,先去加 ...

  4. Android开发之封装log打印日志的工具类,实用logutils详细代码

    public final class LogUtil { /** all Log print on-off */ private final static boolean all = true; /* ...

  5. String painter (区间dp)

    There are two strings A and B with equal length. Both strings are made up of lower case letters. Now ...

  6. 网址中的静态资源 public

     客户端浏览器收到的HTML响应内容中如果带有 link img script video audio 等带有src或者href标签时候,这些都是外部链接资源请求url.浏览器会默认自动性的对这些资源 ...

  7. Vue文件模板

    <template> <div> </div> </template> <script> export default { } </s ...

  8. layui表单引入ueditor遇坑记

    1. 错误示例:表单容器是div标签则无法获取ueditor的内容 注:对于普通的表单元素表单容器是div也都能获取 <!DOCTYPE html> <html> <he ...

  9. python sha256 键值对参数格式接口测试

    # coding=utf-8 import requests import time import uuid import hashlib import hmac import random impo ...

  10. 学会使用BeanUtils,提高你的开发效率

    一.关于BeanUtils 一说到BeanUtils,大家可能不清楚指的哪个BeanUtils.因为它在很多包里面都有,其中挺常用的就是 (1)org.apache.commons.beanutils ...