基于Java-based的Spring源码解读(二)

上一篇文章介绍到了AnnotationConfigApplicationContext的类图,今天来分析下每个接口的功能及Spring构建该类图的一些思想及设计原则

  • BeanFactory:Spring Bean容器的顶级接口,定义了获取Bean、判断是否单例、获取类型、获取别名等与Bean及其属性相关的方法。因此功能主要是获取Bean及其属性
  • MessageSource:用于解析消息的策略接口,支持此类消息的参数化和国际化。从给定的消息源解析并获取消息
  • ListableBeanFactory:BeanFactory接口的扩展将由Bean工厂实现,它可以枚举所有的bean实例,而不是根据客户端的请求逐个尝试按名称查找bean。预加载所有bean定义的BeanFactory实现(例如基于XML的工厂)可以实现这个接口。
  • HierarchicalBeanFactory:继承BeanFactory,在BeanFactory定义的基础上增加了对parentFactory的支持
  • ApplicationEventPublisher:封装事件发布功能的接口,只定义了一个重载的方法publishEvent,java8增加了对函数式接口的支持
  • ResourceLoader:加载资源(类路径、文件系统等)的策略接口
  • ResourcePatternResolver:继承ResourceLoader,用于将位置模式(例如,Ant样式的路径模式)解析为资源对象的策略接口。
  • EnvironmentCapable:该接口意味着包含并暴露Environment的引用
  • DefaultResourceLoader:继承ResourceLoader,加载资源的默认实现,并定义了一个显式表示相对路径的内部类ClassPathContextResource
  • ApplicationContext:为应用程序提供配置的中央接口。当应用程序运行时,这是只读的,但是如果实现支持这样做,则可以重新加载。
  • LifeCycle:定义控制生命周期开始或停止的通用接口。典型用例是控制异步处理。注意:这个接口并不意味着特定的自动启动语义。实现这个目的考虑实现SmartLifeCycle
  • ConfigurableApplicationContext:服务发现接口,关于服务发现可以参考这篇博文
  • AbstractApplicationContext:继承DefaultResourceLoader,并实现了ConfigurableApplicationContext接口,ApplicationContext的抽象实现
  • GenericApplicationContext:通用的ApplicationContext,内部持有一个DefaultListableBeanFactory实例,并且不采用特定的Bean定义格式。为了允许ApplicationContext应用任一个bean定义读取器,实现了BeanDefinitionRegistry
  • AliasRegistry:定义对alias的简单增删改等操作
  • BeanDefinitionRegistry:定义对BeanDefinition的增删改等操作
  • AnnotationConfigRegistry:注解配置应用上下文的通用接口,定义了registry(注册)、scan(扫描)的方法
  • AnnotationConfigApplicationContext:集合上面各种功能的独立的应用程序上下文

通过上面大篇幅的介绍,终于把整个类图了了解完了。我们可以看到整个体系,Spring设计的如此精良,每个接口都职责分明,也使用到了一些设计模式,如:策略模式

好了,今天先写到这,明天继续深入Spring是如何读取注解配置的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值