Spring Ioc整体架构概述

1.Spring概述

        Spring通过配置文件来描述Bean和另一个Bean之间的依赖关系,利用Java的反射功能实例化Bean并建立起Bean的依赖关系。Spring在此基础上提供了,Bean实例缓存,生命周期管理,代理,事件机制,国际化,资源装载等功能。

        Spring用来实现Bean工厂的核心接口BeanFactory和ApplicationContext。我们一般把BeanFactory成为Ioc容器,将ApplicationContext称为应用上下文,也可以称为Spring容器。

2.BeanFactory介绍

1)DefaultListableBeanFactory继承图

AliasRegistry:定义Bean别名的增删改查操作

BeanDefinitionRegistry:提供对BeanDefinition的增删改查操作

SingletonBeanRegistry:提供对单例Bean的注册注册和获取

BeanFactory:Spring容器的顶级接口,提供获取单个Bean或Bean属性的接口

HierarchicalBeanFactory:层次关系的接口,使BeanFactory可以继承

ListableBeanFactory:提供获取所有Bean的接口定义

ConfigurableBeanFactory:提供对Bean工厂配置接口

AutowireCapableBeanFactory:提供Bean自动装配的接口,创建Bean,Bean初始化配置,自动注入等操作

ConfigurableListableBeanFactory:提供分析修改Bean定义的接口,并预先实例化单例接口

2)主要实现类源码分析

之后再完善

SimpleAliasRegistry:

DefaultSingletonBeanRegistry:

FactoryBeanRegistrySupport:

AbstractBeanFactory:

AbstractAutowireCapableBeanFactory:

DefaultListableBeanFactory:

3.ApplicationContext介绍

ApplicationContext接口继承了ListableBeanFactory和HierarchicalBeanFactory也就是ApplicationContext拥有BeanFactory获取Bean和Bean的接口定义和层次关系的能力,同时使用了装饰者设计模式,在AbstractRefreshableApplicationContext中包含了DefaultListableBeanFactory的属性。也就是BeanFactory用来配置保存bean,ApplicationContext在此基础上拓展了加载上下文,国际化,事件发布等能力。

1)AnnotationConfigApplicationContext继承图

ApplicationContext:应用程序配置的中心接口

Lifecycle:生命周期接口,控制上下文启动和停止

ConfigurableApplicationContext:应用程序上下文配置的接口

EnvironmentCapable:公开上下文环境相关的接口

MessageSource:国际化解析消息的策略接口

ApplicationEventPublisher:事件发布相关的接口

ResourcePatternResolver:根据资源位置获取资源的接口,可以解析jar包中的资源文件

ResourceLoader:加载资源的策略接口

2)主要实现类源码分析

DefaultResourceLoader:

AbstractApplicationContext:

GenericApplicationContext:

AnnotationConfigApplicationContext:

4.总结

Ioc容器主要的接口是BeanFactory和ApplicationContext,BeanFactory提供Bean的操作,ApplicationContext继承了BeanFactory在此基础上提供了上下文配置的功能,我们可以配置元数据加载上下文,把获取到的Bean保存在Ioc中,ApplicationContext并额外提供了Bean实例缓存,生命周期管理,代理,事件机制,国际化,资源装载等功能。

BeanFactory的主要实现是DefaultListableBeanFactory

ApplicationContext根据xml加载上下文的实现是ClassPathXmlApplicationContext

ApplicationContext根据注解加载上下文的实现是AnnotationConfigApplicationContext

Springboot的加载上下文根据类型判断

        如果是Servlet环境,实现是AnnotationConfigServletWebServerApplicationContext

        如果是反应式环境,实现是AnnotationConfigReactiveWebServerApplicationContext

        默认是AnnotationConfigApplicationContext

Springboot主要在AnnotationConfigServletWebServerApplicationContext中加入了嵌入式web容器,像tomcat,jetty,undertow。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LouD_dm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值