Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >系统学习SpringFramework:Spring 概述

系统学习SpringFramework:Spring 概述

作者头像
栗筝i
发布于 2022-12-01 13:41:54
发布于 2022-12-01 13:41:54
6350
举报
文章被收录于专栏:迁移内容迁移内容

本篇内容包括:Spring/SpringFrame 概述、Spring IOC 和 AOP 概述、Spring 全家桶内容概述(包括:Spring Boot、Spring Cloud、Spring Cloud data flow …)等内容!

一、Spring/SpringFrame 概述

Spring 是一个生态体系(也可以说是技术体系),是集大成者,它包含了 Spring Framework、Spring Boot、Spring Cloud 等(还包括Spring Cloud data flow、spring data、spring integration、spring batch、spring security、spring hateoas),我们常提到的 IOC、AOP 等概念实际上是来源于 Spring Framework。

Spring Framewor 框架是 Java 平台的一个开源的全栈(full-stack)应用程序框架和控制反转容器实现,一般也被直接称为 Spring。该框架的一些核心功能理论上可用于任何 Java 应用,但 Spring Framewor 还为基于 Java 企业版平台构建的 Web 应用提供了大量的拓展支持。Spring Framewor 没有直接实现任何的编程模型,但它已经在 Java 社区中广为流行,基本上完全代替了企业级 JavaBeans(EJB)模型。

Spring Framewor 框架以 Apache License 2.0 开源许可协议的形式发布,该框架最初由 Rod Johnson 以及 Juergen Hoeller 等人开发。

Spring 官方对 Spring Framework 简短描述:为依赖注入、事务管理、WEB应用、数据访问等提供了核心的支持。Spring Framework 专注于企业级应用程序的“管道”,以便开发团队可以专注于应用程序的业务逻辑。

Ps:千万不要把 Spring 和 Spring Framework 搞混淆了,很多文章都错误的定义了 spring:spring 是一个一站式的轻量级的 Java开发框架,核心是控制反转(IoC)和面向切面(AOP),针对于开发的 Web层(springMVC)、业务层(IoC)、持久层等都提供了多种配置解决方案。这是 Spring Framework 的定义,至于 Spring,是整个生态。


二、Spring IOC 和 AOP 概述

1、IOC

IoC(Inversion of control )即“控制反转”,它是一种设计思想而非一个技术实现。描述了 Java 开发领域对象的创建以及管理的问题。通过 Spring 来管理对象的创建、配置和生命周期,这样相当于把控制权交给了 Spring,不需要人工来管理对象之间复杂的依赖关系,这样做的好处就是解耦。

  • 传统的开发方式 :往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来;
  • 使用 IoC 思想的开发方式 :不通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面过去即可

从以上两种开发方式的对比来看:我们 “丧失了一个权力” (创建、管理对象的权力),从而也得到了一个好处(不用再考虑对象的创建、管理等一系列的事情)

  • 控制了什么:控制了对象(创建、实例化、管理的权力)
  • 反转了什么 :反转了控制权,控制权交给外部环境(Spring 框架、IoC 容器)
2、AOP

AOP(Aspect oriented programming),即面向切面编程,它是一个编程范式,是 OOP(面向对象编程)的一种延续,目的就是提高代码的模块性。

Spring AOP 基于动态代理的方式实现,如果是实现了接口的话就会使用 JDK 动态代理,反之则使用 CGLIB 代理,Spring中 AOP 的应用主要体现在 事务、日志、异常处理等方面,通过在代码的前后做一些增强处理,可以实现对业务逻辑的隔离,提高代码的模块化能力,同时也是解耦。Spring主要提供了 Aspect 切面、JoinPoint 连接点、PointCut 切入点、Advice 增强等实现方式。


三、Spring 全家桶内容概述

1、Spring Boot

但是,无论 Spring Framework 接口如何简化,设计如何优美,始终无法摆脱被动的境况:由于它自身并非容器,所以基本上不得不随 JavaEE 容器启动而装载,例如 Tomcat、Jetty、JBoss 等。然而 Spring Boot 的出现,改变了 Spring Framework 甚至整个 Spring 技术体系的现状(摘自小马哥的《SpringBoot编程思想》)。

Spring Boot 这家伙简直就是对 Java 企业级应用开发进行了一场浩浩荡荡的革命。如果稍微有几年工作经验的老油条,应该都记得以前的 Java Web 开发模式:Tomcat + WAR包。WEB项目基于spring framework,项目目录一定要是标准的 WEB-INF + classes + lib,而且大量的 xml 配置。如果说,以前搭建一个 SSH 架构的Web项目需要 1 个小时,那么现在应该 10 分钟就可以了。

Spring Boot 能够让你非常容易的创建一个单机版本、生产级别的基于 spring framework 的应用。然后,"just run"即可。Spring Boot 默认集成了很多第三方包,以便你能以最小的代价开始一个项目。

官方对 Spring Boot 的定义:

Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring. Spring Boot takes an opinionated view of building production-ready applications.

即 Spring Boot 为快速启动且最小化配置的 Spring 应用而设计,并且它具有用于构建生产级别应用的一套固化的视图。这里的固化的视图,笔者认为可以理解成 Spring Boot 的约定,因为Spring Boot 的设计是约定大于实现的。

2、Spring Cloud

Spring Cloud 事实上是一整套基于 Spring Boot 的微服务解决方案。它为开发者提供了很多工具,用于快速构建分布式系统的一些通用模式,例如:配置管理、注册中心、服务发现、限流、网关、链路追踪等。

3、Spring Cloud data flow

Data flow 是一个用于开发和执行大范围数据处理其模式包括ETL,批量运算和持续运算的统一编程模型和托管服务。对于在现代运行环境中可组合的微服务程序来说,spring cloud data flow是一个原生云可编配的服务。

使用 spring cloud data flow,开发者可以为像数据抽取,实时分析,和数据导入/导出这种常见用例创建和编配数据通道 (data pipelines)。

Spring cloud data flow 是基于原生云对 spring XD的重新设计,该项目目标是简化大数据应用的开发。

Spring XD 的流处理和批处理模块的重构分别是基于 spring boot的stream 和 task/batch 的微服务程序。这些程序现在都是自动部署单元而且他们原生的支持像 Cloud Foundry、Apache YARN、Apache Mesos和Kubernetes 等现代运行环境。

Spring cloud data flow 为基于微服务的分布式流处理和批处理数据通道提供了一系列模型和最佳实践。

4、Spring Data

Spring Data 是Spring 的一个子项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。无论是哪种持久化存储, 数据访问对象(或称作为DAO,即Data Access Objects)通常都会提供对单一域对象的CRUD (创建、读取、更新、删除)操作、查询方法、排序和分页方法等。Spring Data 则提供了基于这些层面的统一接口(CrudRepository,PagingAndSortingRepository)以及对持久化存储的实现。

5、Spring Integration

Spring Integration 在基于 Spring 的应用程序中实现轻量级消息传递,并支持通过声明适配器与外部系统集成。 Spring Integration的主要目标是提供一个简单的模型来构建企业集成解决方案,同时保持关注点的分离,这对于生成可维护,可测试的代码至关重要。Spring Framework鼓励开发人员使用接口进行编码,并使用依赖注入(DI)为普通旧Java对象(POJO)提供执行其任务所需的依赖项。 Spring Integration 将这一概念更进一步,其中POJO使用消息传递范例连接在一起,并且各个组件可能不了解应用程序中的其他组件。这种应用程序是通过组装细粒度可重用组件来构建的,以形成更高级别的功能。通过精心设计,这些流程可以模块化,并在更高的层次上重复使用。

6、Spring Batch

Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。Spring Batch 是 Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使得已经使用 Spring 框架的开发者或者企业更容易访问和利用企业服务。

Spring Batch 提供了大量可重用的组件,包括了日志、追踪、事务、任务作业统计、任务重启、跳过、重复、资源管理。对于大数据量和高性能的批处理任务,Spring Batch 同样提供了高级功能和特性来支持,比如分区功能、远程功能。总之,通过 Spring Batch 能够支持简单的、复杂的和大数据量的批处理作业。

7、Spring Security

Spring Security 是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring IoC,DI(控制反转 Inversion of Control ,DI:Dependency Injection 依赖注入)和 AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringFramework、SpringBoot、SpringCloud的区别
是一个技术生态体系,是集大成者。它包含了Spring Framework、Spring Boot、Spring Cloud等(还包括Spring Cloud data flow、spring data、spring integration、spring batch、spring security、spring hateoas),可以参考链接:https://spring.io/projects 下图为部分内容。
全栈程序员站长
2022/09/05
5800
SpringFramework、SpringBoot、SpringCloud的区别
【Spring】 ——初识Spring
Spring是一个开源的Java应用框架,它提供了一套全面的解决方案,用于开发企业级Java应用程序。Spring框架旨在简化Java开发,并提供了一种灵活且非侵入式的编程模型,帮助开发人员构建可扩展、模块化和可维护的应用程序。
终有救赎
2023/10/16
4530
【Spring】 ——初识Spring
Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring
Spring 框架为现代基于 java 的企业应用程序提供了一个全面的编程和配置模型——适用于任何类型的部署平台。
宁在春
2022/10/31
5280
Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring
1. Spring 简介
Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用
捞月亮的小北
2023/12/01
2100
Spring 学习笔记(1) Spring 核心功能和概念
首先来介绍一下 Spring , 打开 Spring 官网我们可以看到 Spring 有众多框架,比如 SpringMVC、 SpringBoot、 Spring Cloud 等等,它是这些框架的集合,而 Spring Framework 是 Spring 里面的一个开源框架,并且 Spring 框架是其它框架的核心和基础。
归思君
2023/10/16
4290
Spring 学习笔记(1) Spring 核心功能和概念
Spring框架快速入门
Spring Framework是一个轻量级的解决方案,也是构建企业级应用程序的潜在一站式解决方案。但是,Spring是模块化的,允许您只使用您需要的部件,而无需引入其余部分。您可以使用IoC容器,顶部有任何Web框架,但您也可以只使用 Hibernate集成代码或JDBC抽象层。Spring Framework支持声明式事务管理,通过RMI或Web服务远程访问您的逻辑,以及用于持久保存数据的各种选项。它提供了全功能的MVC框架,使您能够将AOP透明地集成到您的软件中。
jack.yang
2025/04/05
1160
【面试题精讲】Spring Framework有哪些模块?
Spring Framework是一个广泛使用的开源应用程序框架,用于构建企业级Java应用程序。它提供了许多不同的模块,用于支持各种不同的应用程序开发需求。以下是Spring Framework的一些核心模块:
程序员朱永胜
2023/09/01
2710
Spring技术内幕:设计理念和整体架构概述
程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决。 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断总结,积累了很多经验。 相信大家都使用过Spring,有些人了解它的核心:IOC和AOP,但只是了解它们的基本概念、使用了反射和动态代理,关于如何管理对象、代理的具体实现了解的比较浅。 有些人使用Spring MVC,使用Spring集成数据库、事务、消息队列以简化操作,但对集成的具体设计思路和实现了解的也比较
二十三年蝉
2018/07/05
2K0
2. Spring 概述
注意:Spring5版本之后是8个模块。在Spring5中新增了WebFlux模块。而这里面 , IOC 和 AOP 最为重要
捞月亮的小北
2024/06/26
1390
2. Spring 概述
Spring Framework简介
要谈Spring的历史,就要先谈J2EE。J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。
jack.yang
2025/04/05
1470
Spring Framework简介
Spring概述「建议收藏」
Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。
全栈程序员站长
2022/08/04
5430
Spring概述「建议收藏」
springboot第17集:Spring我的春天
Spring是一个开源免费的框架和容器,具有轻量级和非侵入式的特点。它支持控制反转(IoC)和面向切面(AOP),同时提供了对事务和其他框架的支持。因此,简单来说,Spring就是一个轻量级的IoC和AOP容器框架。
达达前端
2023/10/08
2280
springboot第17集:Spring我的春天
Spring的概述及Spring6快速入门
Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。
小小程序员
2023/03/12
1.1K0
Spring的概述及Spring6快速入门
框架分析(4)-Spring
Spring框架是一个开源的Java企业级应用程序开发框架,它提供了一种简化Java开发的方法,帮助开发者构建可扩展、模块化和高效的企业级应用程序。
学编程的小程
2023/10/11
2320
框架分析(4)-Spring
Spring知识整合 —— Spring概述篇
Spring 是一个轻量级的Java 企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
运维搬砖
2019/07/29
8730
Spring知识整合 —— Spring概述篇
Spring系列之初识Spring Spring概述
Spring当然不是上面那个Spring,Spring之所以命名为Spring是因为这个开源的轻量级的开源框架的出现给软件行业带来了春天,促进了软件行业的发展 Spring的理念:整合现有的框架技术,使技术更加实用,是一个大杂烩
一只胡说八道的猴子
2020/09/27
7580
Spring系列之初识Spring Spring概述
从零学习Spring(一)
今天我们便踏上Spring框架的学习之路,熟悉此公众号的读者知道,公众号正在连载关于MyBatis,Spring MVC,Spring Boot框架的教程。如果需要学习的读者可以翻查历史记录或者点击下方链接:
用户1093975
2018/09/21
1.7K0
从零学习Spring(一)
探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty
在现代的软件开发中,框架是不可或缺的工具,它们能够极大地提高开发效率、代码质量以及应用程序性能。Java作为一种广泛应用于企业级应用开发的编程语言,拥有众多优秀的框架。本文将重点介绍Java中最常用的几个框架,包括Spring、Spring MVC、Spring Boot、MyBatis和Netty,深入探讨它们的作用、特点以及适用场景。
IT_陈寒
2023/12/13
3.6K0
探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty
Spring学习(1)——快速入门
认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。 什么是 Spring: Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,来源于 Rod Johnson 在其著作《Expert one on one J2EE design and development》
我没有三颗心脏
2018/04/26
1.2K0
Spring学习(1)——快速入门
一篇带你进入Spring的世界
我们上学期开了一门网络编程课,讲了servlet+jsp,不过那个老师就喜欢扯东扯西的讲一大堆无关紧要的东西,好家伙重点全跳过,我就索性就没听过了。所以jsp学的不好的同学无所谓,不过建议Servlet学习透彻些,毕竟现在的Java WEB都还是围绕着Servlet的,这些框架也都是封装的Servlet。
东边的大西瓜
2022/05/05
2930
一篇带你进入Spring的世界
相关推荐
SpringFramework、SpringBoot、SpringCloud的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档