1.Spring整体架构

前言

       我们将会在这里介绍Spring核心框架的体系结构,并概述每个模块的功能与实现;

       Spring核心框架按照其功能可以划分为5个主要模块,为持久层,业务层到展现层都提供了支持;

       其中Ioc和AOP是Spring框架所有功能实现的基础;


Test(测试)

      Test模块支持使用 JUnit 和 TestNG 对 Spring 组件进行测试。

Core Container(核心容器)

      包括Beans,Core,Contexts 和Expression Language模块,其中Beans和Core是Spring框架的最基础部分,提供Ioc(Inverse of Control,控制反转)功能;

  • Beans主要包含访问配置文件、创建和管理bean以及DI相关的一些类
  • Core主要包含Spring框架的核心工具类
  • Context基于Core和Beans模块之上,为Spring提供大量的扩展,提供了国际化,资源加载等
  • Expression即SpringEL与JSP的EL表达式类似,可以方便的获取属性的值,属性的分配,方法的调用,访 问数组上下文等

       类与类之间具有依赖关系。如果依赖关系的管理是由类自己来完成的,会导致代码的高度耦合和可测试性的降低。

       所以,可以由Ioc容器对类之间的依赖关系进行管理,通过Ioc容器来完成依赖注入(接口注入,setter注入,构造器注入。而且为了防止注入异常,Ioc还提供了对特定依赖的检查),这样可以在解耦代码的同时提高代码的可测试性;

      让开发者从类的实例化,依赖关系的装配等工作中解脱出来。通过配置文件或注解描述类与类之间的依赖关系,自动完成类的初始化和依赖注入。

       从注入方式来看,Ioc有3种类型:构造函数注入,属性注入和接口注入;Spring Ioc支持构造函数注入和属性注入。

       BeanFactory是Ioc核心接口,实现了容器的核心功能;

       Context模块扩展了BeanFactory接口,添加了Bean生命周期控制,框架事件体系等功能。ApplicationContext是Context模块的核心接口;

       表达式语言用于查询和管理运行期的对象,支持设置/获取对象属性,调用对象方法等。此外,还提供了逻辑表达式运算,变量定义等功能,可以方便地通过表达式串和Ioc容器进行交互。

AOP

         面向切面编程,将公共部分抽取出来,为系统解耦;

  • Aspects 提供了对 AspectJ 这种AOP语言级框架的集成支持;
  • Instrumentation提供了 class instrumentation 支持和classloader实现,使得可以在特定应用服务器上使用;Java 5.0引入了java.lang.instrument,允许在JVM启动时启用一个代理类,通过该代理类在运行期间修改类的字节码,改变类的功能,从而实现AOP的功能;

Data Access/Integration(数据访问和集成)

        该层主要由JDBC、ORM、OXM、JMS 和 Transactions 模块,主要是和数据库相关的操作
  • JDBC此模块包含了 Spring 对 JDBC 数据访问进行封装的所有类
  • ORM 关系映射API,为JPA,Hibernate,mybatis等提供一个交互,利用ORM,可以混合的使用Spring特性进 行ORM映射
  • OXM模块提供了一个对 Object/XML映射实现的抽象层
  • Transactions:事务的相关操作

       Spring建立了一套面向DAO层的统一的异常体系,同时将各种访问数据的检查型异常转换了非检查型异常,为整合各种持久层框架做好准备。其次,Spring通过模板化技术对各种数据访问技术进行了薄层封装,将模式化的代码隐藏起来,大大简化了代码。

       这样,Spring就建立了和数据形式及访问技术无关的统一的DAO层。借助AOP技术,Spring提供了声明式事务的功能。

Web及远程操作

        Web 上下文模块建立在应用程序上下文模块之上,为基于 Web的应用程序提供了上下文;该模块建立在ApplicationContext模块之上,提供了各种面向Web的工具类。WebSocket提供了一个在Web应用中高效,双向的通信;

  • Web:提供了基础的面向 Web 的集成特性;
  • Servlet web.servlet.jar: 该模块包含 Spring 的 model-view-controller (MVC) 实现;
  • Porlet 模块: 提供了用于 Porlet 环境和 Web-Servlet 模块的 MVC 的实现;       
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值