Spring三大组件

Spring架构图:

《Spring三大组件》

核心容器(Spring core)

核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。BeanFactory使用依赖注入的方式提供给组件依赖。

Spring上下文(Spring context)

Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,如JNDI、EJB、电子邮件、国际化、校验和调度功能。

Spring面向切面编程(Spring AOP)

通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring框架中。所以,可以很容易地使 Spring框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

Spring DAO模块

DAO模式主要目的是将持久层相关问题与一般的的业务规则和工作流隔离开来。Spring 中的DAO提供一致的方式访问数据库,不管采用何种持久化技术,Spring都提供一直的编程模型。Spring还对不同的持久层技术提供一致的DAO方式的异常层次结构。

Spring ORM模块

Spring 与所有的主要的ORM映射框架都集成的很好,包括Hibernate、JDO实现、TopLink和IBatis SQL Map等。Spring为所有的这些框架提供了模板之类的辅助类,达成了一致的编程风格。

Spring Web模块

Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web层使用Web层框架,可选的,可以是Spring自己的MVC框架,或者提供的Web框架,如Struts、Webwork、tapestry和jsf。

Spring MVC框架(Spring WebMVC)

MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的。Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器。Spring支持多种视图技术。

Spring三大组件:

Bean组件
组件作用
    Bean组件在Spring中的Beans包下,为了解决三件事。Bean的创建,Bean的定义,Bean的解析。最关心的就是Bean的创建。
Bean的创建
    1、工厂模式的实现,顶层接口是:BeanFactory
    虽然最终实现类是DefaultListableBeanFactory,但是其上层接口都是为了区分在Spring内部对象的传递和转换的过程,对对象的数据访问所做的限制。
    ListableBeanFactory:可列表的
    HierarchicalBeanFactory:可继承的
    AutowriteCapableBeanFactory:可自动装配的
    这四个接口,共同定义了Bean的集合,Bean之间的关系,Bean的行为。
Bean的定义
    Bean的定义完整的描述在Spring配置文件中节点中,包括子节点等。
    在Spring内部它被转换成BeanDefinition对象,后续操作都是对这个对象操作。
    主要是BeanDefinition来描述
Bean的解析
    BeanDefinitionReader
    Bean的解析就是对Spring配置文件以及对Tag的解析。

Context组件
组件作用
    在Spring中的context包下,为Spring提供运行环境,用以保存各个对象状态。
    Context作为Spring的IOC容器,整合了大部分功能或说大部分功能的基础,完成了以下几件事:
      1、标识一个应用环境
      2、利用BeanFactory创建Bean对象
      3、保存对象关系表
      4、能够捕获各种事件
    ApplicationContext是context的顶级父类,除了能标识一个应用的基本信息外,还继承了五个接口,扩展了Context的功能。并且继承了BeanFactory,说明Spring容器中运行的主体对象是Bean,另外还继承了ResourceLoader,可以让ApplicationContext可以访问任何外部资源。

ApplicationContext子类
    1、ConfigurableApplicationContext:表示Context是可以修改的,在构建Context,用户可以动态添加或者修改已有的配置。
    2、WebApplicationContext:为Web准备的Context,可以访问ServletContext。

Core组件
访问资源
    1、它包含了很多关键类,一个重要的组成部分就是定义的资源的访问方式,这种把所有资源都抽象成了一个接口的方式很值得学习。
    2、Resource接口封装了各种可能的资源类型,继承了InputStreamSource接口。
    加载资源的问题,也就是资源加载者的统一,由ResourceLoader接口来完成。
    默认实现是:DefaultResourceLoader

Core资源的加载
    Core组件将解析等工作委托给了ResourcePatternResolver来完成,作为一个接头人,把资源的加载,解析和定义整合在了一起便于其他组件使用。

    原文作者:彩虹之路
    原文地址: https://blog.csdn.net/jtkjtj/article/details/80111386
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞