Spring源码核心类梳理(持续更新)

BeanDefinitionReader

BeanDefinitionReader的作用是读取Spring配置文件中的内容,将其转换为 IoC 容器内部的数据结构:BeanDefinition。
在这里插入图片描述

  • XmlBeanDefinitionReader:读取 XML 文件定义的 BeanDefinition。
  • GroovyBeanDefinitionReader:读取 Groovy 语言定义的 Bean。
  • PropertiesBeanDefinitionReader:可以从属性文件,Resource,Property 对象等读取 BeanDefinition。

Resource

在这里插入图片描述

  • FileSystemResource:文件系统资源,资源以文件系统路径的方式表示。
    在这里插入图片描述
  • ByteArrayResource:字节数组资源,若需要操作描述一个字节数组,可以用这个资源类。
    在这里插入图片描述- InputStreamResource:输入流资源,是一个不可变InputStream的包装和一个不可变的描述字符串。
    在这里插入图片描述
  • ClassPathResource:类路径(相对路径)资源,资源以相对于类路径的方式表示。
    在这里插入图片描述
  • UrlResource:Url资源,封装了可以以URL表示的各种资源。
    在这里插入图片描述
  • PathResource:Spring4.0提供的读取资源文件的新类。
    在这里插入图片描述

ResourceLoader

ResourceLoader 了一个强大的资源加载机制,他可以通过前缀标识加载资源,如:classpath:, file:,ftp等,ResourceLoader用来返回Resource实例。

public interface ResourceLoader {
    Resource getResource(String location);
}

在这里插入图片描述

BeanDefinition

Spring IOC 容器管理了我们定义的各种 Bean 对象及其他们相互的关系,Bean 对象在 Spring 实现中是以 BeanDefinition 来描述的,BeanDefinition 对象相当于Java中的一个模板,不管什么对象都会转化为BeanDefinition。

ApplicationContext

ApplicationContext 是 Spring 提供的一个高级的 IOC 容器,它除了能够提供 IOC 容器的基本功能外,还为用户提供了以下的附加服务。比如:AOP、资源管理、国际化、事件、Environment抽象等。
在这里插入图片描述

  • ClassPathXmlApplicationContext:类路径加载。
  • FileSystemXmlApplicationContext:文件系统路径加载。
ApplicationContext ac = new ClassPathXmlApplicationContext("com/zzm/context/beans.xml");//等同路径:"classpath:com/zzm/context/beans.xml"
ac.getBean("abc",abc.calss);//就可以获得bean了

ApplicationContext ac = new FileSystemXmlApplicationContext("com/zzm/context/beans.xml");//等同路径:"file:com/zzm/context/beans.xml"
ac.getBean("abc",abc.calss);//就可以获得bean了
  • AnnotationConfigApplicationContext:用于基于注解的配置。
@Coniguration
public class Beans{
    @Bean(name="person")
    public Person person(){
    Person person = new Person();
    person.setName("小张");
    }
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Beans.class);
Person person = applicationContext .getBean("person",Person.class);
  • WebApplicationContext:专门为web应用准备的,从相对于Web根目录的路径中装载配置文件完成初始化。

BeanWrapper

BeanWrapper是对Bean的包装,其接口中所定义的功能很简单包括设置获取被包装的对象,获取被包装bean的属性描述器,由于BeanWrapper接口是PropertyAccessor的子接口,因此其也可以设置以及访问被包装对象的属性值。BeanWrapper大部分情况下是在spring ioc内部进行使用,通过BeanWrapper,spring ioc容器可以用统一的方式来访问bean的属性。用户很少需要直接使用BeanWrapper进行编程。

在这里插入图片描述

BeanFactory

BeanFactory 作为最顶层的一个接口类,它定义了 IOC 容器的基本功能规范。BeanFactory 有三个重要的子类:ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory。例如 ListableBeanFactory 接口表示这些 Bean 是可列表化的,而 HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每个 Bean 有可能有父 Bean。AutowireCapableBeanFactory 接口定义 Bean 的自动装配规则。这三个接口共同定义了 Bean 的集合、Bean 之间的关系、以及 Bean 行为。
在这里插入图片描述

HierarchicalBeanFactory

HierarchicalBeanFactory接口是在继承BeanFactory的基础上,实现BeanFactory的父子关系。
在这里插入图片描述

ListableBeanFactory

ListableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的list集合操作功能。
在这里插入图片描述

AutowireCapableBeanFactory

AutowireCapableBeanFactory接口是在继承BeanFactory的基础上,实现Bean的自动装配功能。
在这里插入图片描述

ConfigurableBeanFactory

ConfigurableBeanFactory接口是在继承HierarchicalBeanFactory的基础上,实现BeanFactory的全部配置管理功能。
在这里插入图片描述

SingletonBeanRegistry

SingletonBeanRegistry是单例bean的注册接口。
在这里插入图片描述

ConfigurableListableBeanFactory

ConfigurableListableBeanFactory接口是继承AutowireCapableBeanFactory,ListableBeanFactory,ConfigurableBeanFactory三个接口的一个综合接口。
在这里插入图片描述

DefaultListableBeanFactory

DefaultListableBeanFactory实现接口 ConfigurableListableBeanFactory、BeanDefinitionRegistry(bean定义的注册接口),并继承AbstractAutowireCapableBeanFactory,实现全部类管理的功能。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

泡^泡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值