Spring
发布日期:2021-06-28 23:30:13 浏览次数:4 分类:技术文章

本文共 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

转载地址:https://blog.csdn.net/ynchyong/article/details/112359503 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:火花塞
下一篇:分布式事务

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月04日 12时59分11秒