首页 > 其他分享 >Spring 的狭义与广义

Spring 的狭义与广义

时间:2023-06-04 12:04:39浏览次数:37  
标签:Java 框架 Boot Spring 狭义 广义 Data Cloud


Java 开发者对于 Spring 应该不会陌生。Spring 可以说是 Java EE 开发事实上的标准。无论是 Web 开发,还是分布式应用,Spring 都致力于简化开发者创建应用的复杂性。本文讨论 Spring 在狭义上以及广义上,所承载的不同的概念。

Spring 有广义与狭义之说。

狭义上的 Spring——Spring Framework

狭义上的 Spring, 是特指 Spring 框架(Spring Framework)。Spring 框架是为了解决企业应用开发的复杂性而创建的。Spring 框架的主要优势之一就是其分层架构。分层架构允许使用者选择使用哪一个组件,同时为 Java EE 应用程序开发提供集成的框架。Spring 框架使用基本的 POJO 来完成以前只可能由 EJB 完成的事情。然而,Spring 框架的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 框架中受益。Spring 框架的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring 框架是一个分层的面向与 Java 应用的一站式轻量级开源框架。

Spring 框架前身,是 Rod Johnson 发表在 Expert One-on-One J2EE Design and Development 一书中所包含的3万行代码的附件。在书中,他展示了如何在不使用 EJB 的情况下构建高质量、可扩展的在线座位预留应用程序。为了构建该应用程序,他写了超过万行的基础结构代码。这些代码包含了许多可重用的 Java 接口和类,如 ApplicationContext 和 BeanFactory 等。由于 Java 接口是依赖注入的基本构件,因此他将类的根包命名为com.interface21,意思是这是一个提供给21世纪的参考!根据书中描述,这些代码已经在一些真实的金融系统中使用。

由于该书影响甚广,当时有几个开发人员 Juergen Hoeller 以及 Yann Caroff 联系上了 Rod Johnson,希望将com.interface21代码开源。Yann Caroff 将这个新框架并命名为了“Spring”,意思是就像一缕春风扫平传统 J2EE 的恶冬。所以说,Rod Johnson、Juergen Hoeller 以及 Yann Caroff 是 Spring 框架的共同创立者。

2003年2月,Spring 0.9 发布,采用了 Apache 2.0 开源协议。2004年4月,Spring 1.0 发布。到如今,Spring 框架已经是第5个主要版本了。

广义上的 Spring——Spring 技术栈

广义上的 Spring 是指以 Spring 框架为核心的 Spring 技术栈。这些技术栈涵盖了从企业级应用到云计算等各个方面的内容。包括:

  • Spring Data:Spring 框架中的数据访问模块对 JDBC 及 ORM 提供了很好的支持。随着 NoSQL 和大数据的兴起,出现了越来越多的新技术,比如非关系型数据库、MapReduce 框架。Spring Data 正是为了让 Spring 开发者能更方便地使用这些新技术而诞生的“大”项目——它由一系列小的项目组成——分别为不同的技术提供支持,例如 Spring Data JPA、Sprng Data Hadoop、Spring Data MongoDB、Spring Data Redis 等等。通过 Spring Data,开发者可以用 Spring 提供的相对一致的方式来访问位于不同类型的数据存储中的数据。
  • Spring Batch:一款专门针对企业级系统中的日常批处理任务的轻量级框架,能够帮助开发者方便地开发出强壮、高效的批处理应用程序。通过 Spring Batch 可以轻松构建出轻量级的、健壮的并⾏处理应用,并支持事务、并发、流程、监控、纵向和横向扩展,提供统⼀的接口管理和任务管理。Spring Batch 对批处理任务进行了一定的抽象,它的架构可以大致分为三层,自上而下分别是业务逻辑层、批处理执行环境层和基础设施层。Spring Batch 可以很好地利用 Spring 框架所带来的各种便利,同时也为开发者提供了相对熟悉的开发体验。
  • Spring Integration:在企业软件开发过程中,经常会遇到需要与外部系统集成的情况,这时可能会使用 EJB、RMI、JMS 等各种技术,也许你会引入ESB。如果你在开发时用了 Spring 框架,那么不妨考虑下 Spring Integration——它为 Spring 编程模型提供了一个支持企业集成模式的扩展,在应用程序中提供轻量级的消息机制,可以通过声明式的适配器与外部系统进行集成。Spring Integraton 中有几个基本的概念:Message(带有元数据的Java对象)、Channel(传递消息的管道)和Message Endpoint(消息的处理端)。在处理端可以对消息进行转换、路由、过滤、拆分、聚合等操作;更重要的是可以使用 Channel Adapter,这是应用程序与外界交互的地方,输入是 Inbound、输出则是 Outbound,可选的连接类型有很多,比如 AMQP、JDBC、Web Services、FTP、JMS、XMPP、多种 NoSQL 数据库等。只需通过简单的配置文件就能将所有这些东西串联在一起,实现复杂的集成工作。
  • Spring Security:前身是 Acegi,是较为成熟的子项目之一,是一款可定制化的身份验证和访问控制框架。读者朋友如果对该技术有兴趣,可以参阅笔者所著的开源书《Spring Security 教程》(https://github.com/waylau/spring-security-tutorial)以了解更多 Spring Security 方面的内容。
  • Spring Mobile:对 Spring MVC 的扩展,旨在简化移动 Web 应用的开发。
  • Spring for Android:用于简化 Android 原生应用程序开发的 Spring 扩展。
  • Spring Boot:是 Spring 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 为 Spring 平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地来进行应用的开发。多数 Spring Boot 应用只需要很少的 Spring 配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导者。读者朋友如果对该技术有兴趣,可以参阅笔者所著的开源书《Spring Boot 教程》(https://github.com/waylau/spring-boot-tutorial)是了解更多 Spring Boot 方面的内容。本书的“第25章 Spring Boot”也会对 Spring Boot 做深入的探讨。
  • Spring Cloud:使用 Spring Cloud,开发人员可以开箱即用的实现分布式系统中常用的服务。这些服务可以任何环境下运行,包括分布式环境,也包括开发人员自己的笔记本电脑、裸机数据中心,以及 Cloud Foundry 等托管平台。Spring Cloud 基于 Spring Boot 来进行构建服务,并可以轻松地集成第三方类库,来增强应用程序的行为。读者如果对该技术有兴趣,可以参阅笔者所著的开源书《Spring Cloud 教程》(https://github.com/waylau/spring-cloud-tutorial)是了解更多 Spring Cloud 方面的内容。本书的“第26章 Spring Cloud”也会对 Spring Cloud 做深入的探讨。

Spring 的技术栈还有很多,读者朋友有兴趣的话,可以访问笔者所著的“Spring 5案例大全”项目(<https://github.com/waylau/spring-5-book)了解更多信息。

Spring 的狭义与广义_spring

约定

由于 Spring 是早期 Spring 框架的总称,所以,有时候这个“Spring”这个命名会给读者产生困扰。一般地,我们约定“Spring 框架”特指是狭义上的 Spring,即 Spring Framework;而“Spring”特指是广义上的 Spring,泛指 Spring 技术栈。

参考引用


标签:Java,框架,Boot,Spring,狭义,广义,Data,Cloud
From: https://blog.51cto.com/u_9427273/6410311

相关文章

  • Spring RestTemplate 调用天气预报接口乱码的解决
    SpringRestTemplate调用天气预报接口可能遇到中文乱码的问题,解决思路如下。问题出现我们在网上找了一个免费的天气预报接口http://wthrcdn.etouch.cn/weather_mini?citykey=101280601。我们希望调用该接口,并将返回的数据解析为JSON格式。核心业务逻辑如下:privateWeatherRespo......
  • 踩坑|以为是Redis缓存没想到却是Spring事务!
    前言  最近碰到了一个Bug,折腾了我好几天。并且这个Bug不是必现的,出现的概率比较低。一开始我以为是旧数据的问题,就让测试重新生成了一下数据,重新测试。由于后面几轮测试均未出现,我也就没太在意。  可惜好景不长,测试反馈上次的问题又出现了。于是我立马着手排查,根据日志的表......
  • 聊聊Spring Cloud Gateway
    网关概述整体来看,网关有点类似于门面,所有的外部请求都会先经过网关这一层。网关不仅只是做一个请求的转发及服务的整合,有了网关这个统一的入口之后,它还能提供以下功能。针对所有请求进行统一鉴权、限流、熔断、日志。协议转化。针对后端多种不同的协议,在网关层统一处理后以HT......
  • (五)Spring源码解析:ApplicationContext源码解析
    一、概述1.1>整体概览在前面的内容中,我们针对BeanFactory进行了深度的分析。那么,下面我们将针对BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与BeanFactory的功能相似,都是用于向IOC中加载Bean的。由于ApplicationConext的功能是大于BeanFactory的......
  • 《面试1v1》Spring循环依赖
    我是javapub,一名Markdown程序员从......
  • 《面试1v1》SpringMVC
    我是javapub,一名Markdown程序员从......
  • 《面试1v1》Spring基础
    我是javapub,一名Markdown程序员从......
  • 《面试1v1》SpringBean生命周期
    我是javapub,一名Markdown程序员从......
  • Spring Boot 整合 分布式搜索引擎 Elastic Search 实现 我附近的、酒店竞排
    文章目录⛄引言一、我附近的酒店⛅需求分析⚡源码编写二、酒店竞价排名⌚需求分析⏰修改搜索业务✅效果图⛵小结⛄引言本文参考黑马分布式ElasticsearchElasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容一、我附近的酒......
  • 搭建一个属于自己的springboot项目
    一、确定环境最近公司要上个新系统,指定由我来带两个人进行开发,既然是新项目,那么项目搭建的事就落到我的头上了。现在都是使用springboot进行开发,为此我搭环境使用的是springboot,具体java环境如下,使用springboot的版本是2.3.3.RELEASE。使用maven进行项目管理,总结下,我使用到的......