spring IOC

正如大家所知道,spring 常用的两个子项目为IOC,AOP.

     所谓的IOC,最主要是完成了对象的创建和依赖的管理注入等等。把控制权从具体业务对象手中转交到平台或者框架中(spring的配置文件中)。如:现有的登陆接口中,有一个login().现在登陆为  账号/密码。当项目上线后,客户改为用 身份证/密码 登陆。 账号/密码 登陆模式后期可能还会用到。在这种情况下,一种简单的实现,就是新建一个类实现 登陆接口。重写login().然后再配置文件中,只需要修改原有登陆接口实现类的名称就可以了。这种就很方便。开发人员只要实现相应的登陆逻辑,并修改配置就行。

 

  下来,我们来看看spring IOC的 初始化过程,来了解spring IOC的实现原理.

  spring IOC 容器的初始化分为三步:

   a. 对 spring 配置文件的定位。

   b. 对配置文件的载入。

   c. 向IOC容器中 注册 所有的 bean对象。

 

  在spring IOC的初始化过程中。设计到几个主要的接口:

  Resource  : 完成对 spring 配置文件的定位。返回 配置文件的 File 对象.

  BeanDefinition :声明 spring 配置文件中的 bean 对象 在 容器中 数据结构形式。描述一个bean对象的基本数据结构。

  BeanDefinitionReader : 将配置文件 转为 BeanDefinition  的操作类 接口。

  BeanFactory,ApplicationContext 这两个接口大家应该都很熟悉 不再说明。

 

  1. 通过 Resource 接口 来实现对配置文件的定位。

 

   IOC容器 会根据 web.xml 配置文件时 前缀的不同,分别调用Resource 接口不容的实现类 来完成对资源文件的查找. 

如: 前缀为:classpath: 从classpath路径查找。为:file: 从文件系统同查找。http:作为 URL 加载。

定位到文件的位置后,将配置文件的 InputStreamSource对象取得传入IOC中 ,对象取得传入IOC中. 想了解具体过程 可看源码 XmlBeanDefinitionReader /370 行。

 

2.完成对配置文件的定位后,下来就是解析XML配置过程,并将每个bean转为 IOC 容器中BeanDefinition  数据对象 。

 

在解析的过程中 ,经过一次EncodingResource 对象,实现对xml  解码,默认采用的是utf-8 格式解码. 解析XML过程中,采用JDK自带的解析技术完成解析。 想了解具体的解析过程的话,可看 源码中的 BeanDefinitionParserDelegate 类。个人感觉 解析XML 还是用流行的dom4j方便 哈。

 

3.将 解析后的 BeanDefinition   都注册容器中。也就是一个HashMap.

  可看源码 DefaultListableBeanFactory 中的 registerBeanDefinition().

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值