Spring 技术内幕:Spring 设计理念和整体架构

Spring 技术内幕:Spring 设计理念和整体架构

Spring 的各个子项目

了解即可,对了解 Spring 生态有所帮助

  • Spring Framework(Core): Spring 项目核心,包含 IOC 容器设计,提供依赖反转模式实现,AOP 功能,还包含其他 Spring 的基本模块
  • Spring Security: 广泛使用基于 Spring 的认证和安全工具
  • Spring Security OAuth: OAuth 提供一个开放式的协议,通过协议前端桌面应用可以对 Web 应用进行简单而标准的安全调用
  • Spring Web Flow: 建立在 SpringMVC 上的流程引擎
  • Spring BlazeDS Intergration: 提供 Spring 与 Adobe Flex 技术集成的模块
  • Spring Dynamic Modules: 可以让 Spring 运行在 OSGi 平台上。
  • Spring Batch: 提供构建批处理应用和自动化操作的框架
  • Spring Intergration: 体现了“企业集成模式”的具体实现
  • Spring AMQP: 提供基于 AMQP 的消息服务而开发的
  • Spring .NET: 在 .NET 中使用 Spring 的 IOC 容器
  • Spring Android: 为 Android 终端开发提供 Spring 支持
  • Spring Mobile: 基于 Spring MVC 构建,为特定的移动终端提供定制
  • Spring Social: Spring 框架的扩展,帮助 Spring 应用更好的使用 SNS
  • Spring Data: 为 Spring 应用提供使用非关系型数据的能力

Spring 的设计目标

Spring 为开发者提供的是一个一站式的轻量级应用开发框架

设计理念: 在 Java EE 应用的开发中,支持 POJO 和使用 JavaBean 的开发方式,使应用面向接口开发,充分支持 OO(面向对象)的设计方法

IOC 容器的优点:

  1. 通过一个或几个 XML 文件,我们就可以方便的对应用对象的耦合关系进行流程、修改和维护,因此可以很大程度上简化应用开发
  2. 通过 IOC 容器实现的依赖反转,把依赖关系的管理从 Java 对象中解放出来,交给 IOC 容器来完成,从而完成了对象之间关系的解耦

AOP 的优点: 可以通过 AOP,以动态和非侵入式的方式来增强业务功能

AOP 的实现方式:

  1. AspectJ 框架(静态代理)
  2. 直接使用 JVM 动态代理 Proxy 的实现(JDK 动态代理)
  3. CGLIB 动态代理

Spring 的整体架构

  • Spring IOC: 包含最为基本的 Ioc 容器 BeanFactory 的接口与实现,同时还设计了 IOC 容器的高级形态 ApplicationContext 应用上下文供用户使用。
  • Spring AOP: Spring 集成了 AspectJ 作为 AOP 的一个特定实现,同时还在 JVM 动态代理/CGLIB 的基础上实现了一个 AOP 框架,作为 Spring 集成其他模块的工具,比如:TransactionProxyFactoryBean 的声明式事务就是通过 AOP 集成的。
  • Spring MVC: 以 DispatcherServlet 为核心,实现了 MVC 模式,包括 Web 容器环境的集成,Web 请求的拦截、分发、处理和 ModelAndView 数据的返回。
  • Spring JDBC/Spring ORM: Spring 对 JDBC 做了一层封装,使通过 JDBC 完成的对数据库的操作更加简洁。Spring 还提供了许多对 ORM 工具的封装。
  • Spring 事务处理: Spring 事务处理是一个通过 Spring AOP 实现自身功能增强的典型模块。在这个模块可以看到一个通用的实现声明式事务处理的基本过程,还可以看到具体的事务处理器是怎样封装不同的事务处理机制的。(总结:快去看源码)
  • Spring 远程调用: Spring 应用带来的一个好处就是能够将应用解耦,一方面降低设计的复杂性,另一方面可以解耦以后将应用模块分布式的部署,从而提高系统整体的性能。后一种情况下,需要用到 Spring 的远程调用,通过Spring 的封装,为应用屏蔽了各种通信和调用的细节的实现,同时通过这层封装,使应用可以选择不同的远程调用来实现。
  • Spring 应用: 这部分的应用支持,往往来自一些使用非常广泛的 Spring 子项目,或者该子项目本身就可以看成是一个独立的 Spring 应用。通过这个模块的支持,使 Spring 应用可以便利和简洁地容纳第三方的技术实现,不但丰富了 Spring 应用的功能,而且丰富了整个 Spring 生态圈,使 Spring 应用得越来越广泛。

Spring 的优点

  • Sprng 是一个非侵入性的框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有 Spring 或者其他容器的情况下运行。
  • Spring 提供了一个一致的编程模型,使应用直接使用 POJO 开发,从而可以与运行环境隔离开来。
  • Spring 推动应用的设计风格向面向对象及接口编程转变,提高了代码的重用性和可测试性
  • Spring 改进了体系结构的选择,给我们提供了技术实现切换的可能性,比如 Struts 切换到 Spring MVC(通常情况下都不会这么做)。Spring 至少为我们提供了这种可能性和选择,降低了平台锁定的风险。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值