Spring-基础篇

Spring框架的七大模块

  • Spring Core:框架的最基础部分,提供 IoC 容器,对 bean 进行管理。
  • Spring Context:继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化等功能。
  • Spring DAO:提供了JDBC的抽象层,还提供了声明性事务管理方法。
  • Spring ORM:提供了JPA、JDO、Hibernate、MyBatis 等ORM映射层.
  • Spring AOP:集成了所有AOP功能
  • Spring Web:提供了基础的 Web 开发的上下文信息,现有的Web框架,如JSF、Tapestry、Structs等,提供了集成
  • Spring Web MVC:提供了 Web 应用的 Model-View-Controller 全功能实现。

Bean定义5种作用域

singleton(单例) prototype(原型) request session global session

ResourceLoader接口

而Spring框架为了更方便的获取资源,尽量弱化程序员对各个Resource接口实现类的感知与分辨,降低学习与使用成本,定义了另一个接口,就是:ResourceLoader接口。

  1. 此接口有一个特别重要的方法:Resource getResource(String location)。返回的对象,就是Spring容器中Resource接口的实例
  2. Spring内所有的ApplicationContext实例(包括Spring自启动容器或者用户手动创建的其他容器),都实现了这个方法

因此程序员在使用Spring容器时,可以:

  • 不去过于计较Spring内底层Resource的实现方式。
  • 也不需要自己创建Resource实现类。
  • 而是直接使用applicationContext.getResource()语句,即可获取到applicationContext容器本身自有的Resource实例。
  • 进而用此Resource实例,去获取相关的资源数据。

spring ioc初始化流程?

Resource定位 即寻找用户定义的bean资源,由 ResourceLoader通过统一的接口Resource接口来完成 beanDefinition载入 BeanDefinitionReader读取、解析Resource定位的资源 成BeanDefinition 载入到ioc中(通过HashMap进行维护BD) BeanDefinition注册 即向IOC容器注册这些BeanDefinition, 通过BeanDefinitionRegistery实现

什么是BeanDefinition

 SpringIoc容器管理一个Bean或多个Bean,这些Bean通过我们提供给容器的配置元数据被创建出来(例如,在xml中的定义) 在容器中,这些Bean的定义用BeanDefinition对象来表示,包含以下元数据:

  • 全限定类名, 通常是Bean的实际实现类;
  • Bean行为配置元素,它们说明Bean在容器中的行为(作用域、生命周期回调等等);
  • Bean执行工作所需要的的其他Bean的引用,这些Bean也称为协作者或依赖项;
  • 其他配置信息,例如,管理连接池的bean中,限制池的大小或者使用的连接的数量。

Spring官网中对BeanDefinition的解释还是很详细的,但是不是那么通俗易懂,其实BeanDefinition是比较容易解释的:BeanDefinition就是用来描述一个Bean或者BeanDefinition就是Bean的定义。

BeanDefinition加载流程?

定义BeanDefinitionReader解析xml的document BeanDefinitionDocumentReader解析document成beanDefinition

posted @ 2023-12-24 23:30  轻寒  阅读(7)  评论(0编辑  收藏  举报