Spring源码解读 IOC---回归初心,跟着Rod Johnson回到2002年

 

网上解读Spring源码的文章很多,也很好,但是本人觉得当前的Spring5.X体系代码结果过于复杂,本着只学Spring核心功能IOC、AOP的核心,简单为大,特寻根溯源,找到2002年Spring的前身com.interface21,那时候的Spring还不叫Spring,但是核心和现在的还是很相似,学习起来得心应手。

模型驱动:另外本文首先从Spring XML配置文件到Spring Bean的Model的映射开始,先理解Spring Bean的Model模型,这对于理解整个Spring的IOC大有裨益,IOC初始化无非就是将Model转换成实例化的Spring Bean,也可以更深入的理解Rod Johnson的设计初衷。

源码下载:https://download.csdn.net/download/woailaopoqq/15380786

一、启示

分三部分讲,BeanFactory继承体系+XML配置文件映射Spring内部的Model+Spring Bean初始化流程

1.1 BeanFactory体系图

 

1.2 Spring Bean 存储模型

1.3 Spring Bean 初始化流程

 

二、解释

2.1 BeanFactory体系图

为什么设计这么复杂,接口继承,设计模式

Spring的本质是实现了一个bean工厂(beanFactory),它按照我们的要求,生产我们需要的各种各样的bean,便捷的供调用方试用,实例化一个Bean所需的配置信息通过XML、注解或者其他模式实现,提供了一个环境去实例化bean,也可以称之为容器,什么是容器?大家可以思考,比如Servlet容器,和Spring容器有什么异同?

2.1.1 BeanFactory

/**
Bean工厂,顶层接口
 */
public interface BeanFactory {
	/** 
     根据Bean Name获取Bean
	 */
    Object getBean(String name) throws BeansException;	
	/**
    根据Bean Name,Class 类型获取Bean	
	 */
	Object getBean(String name, Class requiredType) throws BeansException; 		     
}



2.1.2 Spring IOC方法调用 流程

类名 方法名 功能描述
XmlBeanFactory public XmlBeanFactory(String filename) throws BeansException XmlBeanFactory
XmlBeanFactory private void loadBeanDefinitions(InputStream is) throws BeansException  解析xml配置文件
XmlBeanFactory private void loadBeanDefinitions(Document doc) throws BeansException  将xml配置文件映射到BeanDefinition
XmlBeanFactory private void loadBeanDefinition(Element el) throws BeansException 将xml配置文件映射到BeanDefinition
XmlBeanFactory PropertyValues pvs = getPropertyValueSubElements(el); 将xml配置文件中Bean的属性放到PropertyValues
XmlBeanFactory private BeanDefinition parseDefaultBeanDefinition(Element el, String beanName, PropertyValues pvs) 获取BeanWrapper中beanInfo等信息
ListableBeanFactoryImpl public final void registerBeanDefinition(String prototypeName, BeanDefinition beanDefinition)  获取BeanDefinition
XmlBeanFactory
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值