博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring
阅读量:1841 次
发布时间:2019-04-25

本文共 2555 字,大约阅读时间需要 8 分钟。

  1. IoC容器和AOP是Spring的核心,是Spring系统中其他组件模块和应用开发的基础。降低应用的负载和框架的侵入性
  2. EJB模型为Java EE开发引入了过度的复杂性,POJO 它让Java洗净铅华,恢复其自然的风采。
  3. 因为依赖注入的特性,这些复杂的依赖关系的管理被反转了,它们的管理交给了容器
  4. 通过使用IoC容器,对象依赖关系的管理转到IoC容器中来了,对象之间的相互依赖关系由IoC容器进行管理,并由容器完成对象的注入。这样就在很大程度上简化了应用的开发,把应用从复杂的对象依赖关系管理中解放出来。
  5. Spring通过定义BeanDefinition来管理基于Spring的应用中的各种对象以及它们之间的相互依赖关系。BeanDefinition抽象了我们对Bean的定义,是让容器起作用的主要数据类型,BeanFactory定义了IoC容器的基本功能规范
    比如DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等都可以看成是容器的附加了某种功能的具体实现,也就是容器体系中的具体容器产品
    对IoC容器来说,BeanDefinition就是对依赖反转模式中管理的对象依赖关系的数据抽象,也是容器实现依赖反转功能的核心数据结构,依赖反转功能都是围绕对这个BeanDefinition的处理上完成的。这些BeanDefinition就像是容器里装的水,有了这些基本数据,容器才能够发挥作用。
  6. FactoryBeanBeanFactory这两个在Spring中使用频率很高的类,一个是Factory,也就是IoC容器或对象工厂;一个是Bean。在Spring中,所有Bean都是由BeanFactory(也就是IoC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能产生或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。BeanFactory接口设计了getBean方法,这个方法是使用IoC容器API的主要方法,通过这个方法,可以取得IoC容器中管理的Bean,
  7. BeanFactory (IoC容器) AutowireCapableBeanFactory→AbstractAutowireCapableBeanFactory→DefaultListableBeanFactory→XmlBeanFactory IoC容器的实现系列, 最底层实现XmlBeanFactory ,这个IoC容器可以读取以XML形式定义的BeanDefinition。理解这一点有助于理解ApplicationContext与基本的BeanFactory之间的区别和联系。我们可以认为直接的BeanFactory实现是IoC容器的基本形式,而各种ApplicationContext的实现是IoC容器的高级表现形式。
  8. DefaultListableBeanFactory
  9. ApplicationContext在BeanFactory的基础上添加的附加功能,这些功能为ApplicationContext提供了以下BeanFactory不具备的新特性。
    ApplicationContext扩展了MessageSource接口,这些信息源的扩展功能可以支持
  • 支持不同的信息源。我们看到ApplicationContext扩展了MessageSource接口,这些信息源的扩展功能可以支持国际化的实现,为开发多语言版本的应用提供服务。
  • 访问资源。体现在对ResourceLoader和Resource的支持上,这样我们可以从不同地方得到Bean定义资源。这种抽象使用户程序可以灵活地定义Bean定义信息,尤其是从不同的IO途径得到Bean定义信息。这在接口关系上看不出来,一般来说,具体Applic-ationContext都是继承了DefaultResourceLoader的子类。因为DefaultResourc-eLoader是AbstractApplicationContext的基类,关于Resource在IoC容器中的使用,
  • 支持应用事件。继承了接口ApplicationEventPublisher,这样在上下文中引入了事件机制。这些事件和Bean的生命周期的结合为Bean的管理提供了便利。
    因为具备了这些丰富的附加功能,使得ApplicationContext与简单的BeanFactory相比,对它的使用是一种面向框架的使用风格,所以一般建议在开发应用时使用ApplicationContext作为IoC容器的基本形式。
  1. IoC容器的初始化包括BeanDefinition的Resouce定位、载入和注册这三个基本的过程。Spring在实现中是把这三个过程分开并使用不同的模块来完成的,这样可以让用户更加灵活地对这三个过程进行剪裁和扩展,定义出最适合自己的IoC容器的初始化过程。
  • BeanDefinition的资源定位由ResourceLoader通过统一的Resource接口来完成
  • BeanDefinition的载入,BeanDefinition实际上就是POJO对象在IoC容器中的抽象
  • 向IoC容器注册这些BeanDefinition的过程,过程是通过调用BeanDefinitionRegistry接口的实现来完成的,这个注册过程把载入过程中解析得到的BeanDefinition向IoC容器进行注册。可以看到,在IoC容器内部,是通过使用一个HashMap来持有这些BeanDefinition数据的。
  1. IoC容器和上下文的初始化一般不包含Bean依赖注入的实现,赖注入发生在应用第一次向容器通过getBean索取Bean时

  2. IoC容器的依赖注入

  • 依赖注入的过程是用户第一次向IoC容器索要Bean时触发的(也有例外在BeanDefinition信息中通过控制lazy-init属性来让容器完成对Bean的预实例化。这个预实例化实际上也是一个完成依赖注入的过程)
  • 依赖注入关系特别密切的方法有createBeanInstance和populateBean

转载地址:http://qotuf.baihongyu.com/

你可能感兴趣的文章
Atitit glb 3tie city lst 三线城市列表 数据目录1. 全球范围内约90个城市 三线 12. 世界性三线城市全球共
查看>>
Atitit glb 1tie 2tie city lst 一二线城市列表数据约50个一线城市Alpha ++ 阿尔法++,,London 伦敦,,New York 纽约,,Alpha +
查看>>
Atitit fms Strait (海峡) lst 数据列表目录1. 4大洋 12. 著名的海大约40个,总共约55个海 13. 海区列表 23.1. 、波利尼西亚(Polynesia,
查看>>
Atitit Major island groups and archipelagos 主要的岛群和群岛目录资料目录1. 岛群 波利尼西亚(Polynesia, 美拉尼西亚(Melanesia,
查看>>
Atitit trave islands list 旅游资源列表岛屿目录1. 东南亚著名的旅游岛屿 21.1. Cjkv 日韩 冲绳 琉球 济州岛 北海道 21.2. 中国 涠洲岛 南澳
查看>>
Atitit 旅游强县城 名单列表 旅游资源但其实,北上广深大概只占全国面积的0.33%,加上新一线城市,也只是占了全国面积的3%。在剩下的97%的土地上,有着约300个地级市,3000个
查看>>
【论文-笔记】海防雷达仿真系统中PPI的设计与实现
查看>>
2019-10-15 相交链表
查看>>
2019-10-28 奇偶链表
查看>>
2019-10-29 移除链表元素
查看>>
【解决】计算机用户名是中文名导致软件安装失败!
查看>>
雷达相关术语理解
查看>>
LeetCode. 扁平化多级双向链表
查看>>
LeetCode. 复制带随机指针的链表
查看>>
LeetCode. 旋转链表
查看>>
LeetCode. 只出现一次的数字
查看>>
LeetCode. 同构字符串
查看>>
LeetCode. 两个列表的最小索引总和
查看>>
Windows动态链接库
查看>>
【LeetCode每日一题】将数组分成和相等的三个部分
查看>>