专栏首页星尘的一个朋友了解 spring 的整体架构

了解 spring 的整体架构

Spring的设计理念

卖家秀

以下为官方文档内容

When you learn about a framework, it’s important to know not only what it does but what principles it follows. Here are the guiding principles of the Spring Framework:传送门

  • Provide choice at every level. Spring lets you defer design decisions as late as possible. For example, you can switch persistence providers through configuration without changing your code. The same is true for many other infrastructure concerns and integration with third-party APIs. 提供各个层面的选择。Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。许多其他基础架构问题以及与第三方API的集成也是如此。
  • Accommodate diverse perspectives. Spring embraces flexibility and is not opinionated about how things should be done. It supports a wide range of application needs with different perspectives. 适应不同的观点。Spring拥抱灵活性,并不认为应该如何做。它以不同的视角支持广泛的应用需求。
  • Maintain strong backward compatibility. Spring’s evolution has been carefully managed to force few breaking changes between versions. Spring supports a carefully chosen range of JDK versions and third-party libraries to facilitate maintenance of applications and libraries that depend on Spring. 保持强大的向后兼容性。Spring的演变经过精心设计,可以在版本之间进行一些重大改变。Spring支持精心挑选的JDK版本和第三方库,以便于维护依赖于Spring的应用程序和库。
  • Care about API design. The Spring team puts a lot of thought and time into making APIs that are intuitive and that hold up across many versions and many years. 为代码质量设定高标准。Spring Framework强调有意义,最新且准确的Javadoc。它是极少数项目之一,可以声称干净的代码结构,包之间没有循环依赖。
  • Set high standards for code quality. The Spring Framework puts a strong emphasis on meaningful, current, and accurate Javadoc. It is one of very few projects that can claim clean code structure with no circular dependencies between packages. 关心API设计。Spring团队投入了大量的思考和时间来制作直观的API,并且可以支持多个版本和多年。

官方给出的解释更像是说明了Spring的开发方向定义,而我们在真正的使用过程中远远不止这些。Spring为我们真正带来的价值,
更像是一个引路人,带我们更轻松的“上道”。

####买家秀

  1. Spring为开发者提供了一站式的轻量级开发平台。它抽象出了我们在许多应用中常常遇到的共性问题,并且Spring在Java EE的应用开发中,支持POJO和使用JavaBean的开发方式1,使应用面向接口开发。充分支持OO的设计方法。

POJO其实是比javabean更纯净的简单类或接口。 POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。 POJO主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。 Javabean虽然数据的获取与POJO一样,但是javabean当中可以有其它的方法

  1. 简化开发,Spring中的核心IoC和AOP有效的帮我们大幅简化开发成本,对象间的依赖耦合关系,使用Spring的IoC便可以轻松的实现。AOP则把我们开发过程中可能出现的大量重复代码在AOP内完成,比如应用日志,安全控制等。
  2. 应用集成,Spring的设计使其与生俱来的能够与其他第三方框架无缝结合,使我们的开发更加灵活,比如与Struts框架,hibernate框架,redis框架,mybatis框架等。

整体架构

Spring框架一共模块有20+,大体可分为五大类

一、核心模块

  • Core(Spring的核心实用程序,为Spring其他模块奠定了基础)
  • Beans(Spring的核心bean,以及bean工厂的支持)
  • Contexts(该模块构建在core和beans之上,集成了beans的特性,为Spring核心提供了大量扩展)
  • Expression(提供了一个强大的表达式语言用于在运行时查询和操纵对象。它是 JSP 2.1 规范中定义的 unifed express language 的一个扩展)

二、AOP模块

  • Aspects( AspectJ 的集成支持,提供了AOP 实现方法)
  • Instrumentation(提供了 class instrumentation 支持和 classloader 实现,使得可以在特定应用服务器上使用)
  • Messaging( Spring4之后增加,为集成一些基础的报文传送应用)

三、数据访问/集成模块

  • JDBC (提供了一个 JDBC 抽象层,它可以消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码。此模块包含了 Spring 对 JDBC 数据访问进行封装的所有类。)
  • ORM (为流行的对象-关系映射 API ,例如 JPA、JDO、 Hibernate、 iBatis等,提供了一个交互层。利用 ORM 封装包,可以混合使用 Spring 提供的特性进行 O/R映射(Object/Relation)。)
  • OXM (提供了一个对 Object/XML映射实现的抽象层,Object/XML 映射实现包括 JAXB、Castor 、XMLBeans 、JiBX 和 XStream。)
  • JMS (Java Messaging Service) 模块主要包含了一些制造和消费消息的特性。
  • (tx)Transaction 模块支持编程和生命性的事务管理,这些事物必须实现特定的接口,并且对所有的 POJO 都适用。

四、Web模块

  • web
  • webflux(Spring5新增,非堵塞函数式 Reactive Web 框架,可以用来建立异步的,非阻塞,事件驱动的服务)
  • webmvc
  • websocket

五、Test模块


参考资料

  1. Spring
  2. Spring技术内幕(第二版)
  3. Spring整体架构
  4. Spring5 系统架构
  5. Spring源码-整体架构

  1. ↩︎

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring AOP的设计和实现方式

    “面向侧面的程序设计”(aspect-oriented programming)这一术语出现的具体时间已经不可考证了,但该词是由施乐帕洛阿尔托研究中心的Chri...

    星尘的一个朋友
  • node.js 部署的 vue 项目怎么在局域网访问

    星尘的一个朋友
  • HTML CSS 随笔记之 cursor

    星尘的一个朋友
  • 为什么你要用 Spring?

    现代 Spring 几乎成为了 Java 在企业级复杂应用开发的代名词,得益于 Spring 轻量简单的设计哲学和其开放包容的生态圈,确实为廉颇老矣,尚能饭否的...

    phoenix.xiao
  • 深入浅出,Spring 框架和 Spring Boot 的故事

    Spring 框架可以说是 Java 开发人员使用的最流行的应用程序开发框架之一。它目前由大量提供一系列服务的模块组成。包括模块容器,为构建横切关注点提供支持的...

    芋道源码
  • Spring、SpringMVC和SpringBoot看这一篇就够了!

    Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反...

    刘文正
  • 《Spring Boot极简教程》第2章 Spring Boot简史小结参考资料

    Java Web开发涉及的技术比较繁杂,涉及到很多开发框架和工具(Java, Scala, Kotlin, Clojure,Groovy, Grails,Gr...

    一个会写诗的程序员
  • 面试中问的话题Spring工作原理

    Spring工作原理 内部最核心的就是IOC了, 动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射 反射其实就是在...

    哲洛不闹
  • Spring Boot!颠覆你的JavaEE开发

    Spring 框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于Spring 解决Java EE 开发的所有问题。Spring 框架主要提供...

    博文视点Broadview
  • Spring简介、框架核心、优缺点、应用场景

    Spring可以做很多事情,它为企业级开发提供了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection...

    Java架构师必看

扫码关注云+社区

领取腾讯云代金券