《学透 Spring》学习笔记 | 笔记1 | Spring 家族

Spring 家族

概述

2003 年,Rod Johnson 对 J2EE(现在的 Java EE) 存在的各种问题进行深入的剖析,并提出了一套解决方案 —— Spring Framework,这就是最早期的 Spring。Spring Framework 对 J2EE 进行了一系列补充,包括依赖注入(Dependency Injection)和 AOP(Aspect Oriented Programming,面向切面编程

Spring Framework模块化设计使得用户可以根据实际需求引入自己需要的模块,但是当用户决定要依赖什么模块时,只能自行判断该模块还需要哪些下游依赖,但又不能确定不同依赖、不同版本的依赖直接是否存在不兼容的情况。后来的 Spring Boot 解决了这个问题,通过强大的自动配置和面向生产的各种能力,让应用开发如虎添翼。当下云计算成为标配的背景下,Spring Cloud 应运而生,为开发云原生 Java 应用提供了很好的支持

Spring 家族主要成员

Spring 家族早期只有几个围绕 Spring Framework 的项目,随各种功能的不断演进,很多模块都从 Spring Framework 中脱离出来,以独立项目的形式发展,也有些项目一开始就是在 Spring Framework 的基础上单独开发的。常见的 Spring 家族成员有:

  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Data

Spring Framework

这是 Spring 家族的第一位成员,为现代 Java 企业应用开发提供了一整套完整的开发与配置模型。Spring Framework 的功能非常丰富,不仅提供了依赖注入、AOP、资源管理等特性,还有完善的数据访问能力,在事务管理、ORM (Object-Relational Mapping,对象关系映射)框架支持等方面都有不错的表现。除此之外,Spring Framework 还提供了调度任务支持、缓存抽象等实用功能。在 Spring Framework 的设计哲学中,开发者拥有很高的灵活度,框架为多种相似功能的第三方组件提供了一致的抽象。

Spring Framework 是 Spring 家族所有成员的基础,因此掌握 Spring Framework 的核心要点和开发实践,是学透 Spring 的基础。

Spring Boot

Spring Framework 提升了 Java EE 项目的开发体验,而 Spring Boot 则是降低了开发生产级 Spring 应用的门槛。只需要几步就能构建一个可以投产的应用,其中还包括了健康检查、监控、度量指标、外化配置等生产所需的功能。

Spring Boot 的起步依赖(starter dependency)很好地解决了 Spring 应用的依赖管理困境 —— 按照功能组织依赖,降低了开发者心智负担。另外,Spring Boot 的依赖经过了严格的兼容性测试。

Spring Boot 的另一大亮点就是自动配置,该功能减少的 Spring 应用的配置量,极端时候甚至可以做到零配置。Spring Boot 可以根据多种条件自动判断是否需要做相应的配置,开发者也可以自行进行微调。

Spring Cloud

随着程序从单体应用发展到了分布式系统,为了维护各种中间件,提供底层支持,让业务团队能够聚焦到业务逻辑上,不用操心基础的分布式系统的能力, Spring Cloud 提供了一系列功能,使得开发者用简单的代码就可以实现高可靠的分布式系统

Spring Data

Spring Framework 本身就为传统的关系型数据库提供了统一的抽象,但随着数据库技术的不断发展,大量新技术和新产品出现,如果把对他们的支持都放入到 Spring Framework 里,会导致框架非常臃肿,因此有了 Spring Data
Spring Data 和 Spring Cloud 一样都提供了许多子模块,其中包含了 JDBC 增强功能、JPA 支持、不同类型的 NoSQL 支持以及对 REST 资源的支持。Spring Data 还提供了诸如仓库(Respository)和模板(Template)这样的统一抽象,来确保 RDBMS、Redis、MongoDB 等数据库操作都有相似的编程模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线一起学习平台设计

设计一个在线一起学习平台,旨在促进远程协作学习,提升学习效率和体验。以下是设计的基本框架和关键功能: 1. 用户管理模块 注册与登录:用户可以通过邮箱、手机号或社交媒体账号注册和登录。个人资料:用户可以完善个人…

OpenCV 调用自定义训练的 YOLO-V8 Onnx 模型

一、YOLO-V8 转 Onnx 在本专栏的前面几篇文章中,我们使用 ultralytics 公司开源发布的 YOLO-V8 模型,分别 Fine-Tuning 实验了 目标检测、关键点检测、分类 任务,实验后发现效果都非常的不错,但是前面的演示都是基于 ultralytics…

【贪心】【哈希表】个人练习-Leetcode-846. Hand of Straights

题目链接:https://leetcode.cn/problems/hand-of-straights/ 题目大意:给出一数列,求是否能刚好将它们分成若干组,每组的元素数量为groupSize,并且元素连续。 思路:因为题目的限制很死,如果能…

C语言分支和循环(下)

C语言分支和循环(下) 1. 随机数生成1.1 rand1.2 srand1.3 time1.4 设置随机数的范围 2. 猜数字游戏实现 掌握了前面学习的这些知识,我们就可以写⼀些稍微有趣的代码了,比如: 写⼀个猜数字游戏 游戏要求: 电…

第6章 复制

文章目录 前言1.配置1.1建立复制1.2断开复制1.3 安全性1.4 只读1.5 传输延迟 2. 拓扑2.1.一主一从结构2.2.一主多从结构2.3.树状主从结构 3.原理3.1复制过程3.2数据同步3.3全量复制 前言 复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础&…

智能交通(2)——IntelliLight智能交通灯

论文分享:IntelliLight | Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mininghttps://dl.acm.org/doi/10.1145/3219819.3220096摘要 智能交通灯控制对于高效的交通系统至关重要。目前现有的交通信号灯大多由手…

【Python系列】列表推导式:简洁而强大的数据操作工具

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

hnust 1949: 顺序表实现(第二部分)

hnust 1949: 顺序表实现(第二部分) 题目描述 拷贝下面的代码,然后将顺序表实现第一部分的工作填入,再完成顺序表的GetElem,LocateElem和ListDelete操作,其他地方不得改动。 #include #include #include using namespace std; #…

已成功与服务器建立连接,但是在登录过程中发生错误。(provider: SSL提供程序,error:0-证书链是由不受信任的颁发机构颁发的。)

已成功与服务器建立连接,但是在登录过程中发生错误。(provider: SSL提供程序,error:0-证书链是由不受信任的颁发机构颁发的。) 在连接SQL Server2008R2数据库时发生错误。 连接字符串:server127.0.0.1;uidsa;pwd1;databasedb; 解决办法: 方…

PySide(PyQt)在图像上画线

1、按鼠标左键任意画线 import sys from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget from PySide6.QtGui import QPainter, QPixmap, QMouseEvent, QColor, QPen from PySide6.QtCore import Qt, QPointclass PaintLabel(QLabel):def __init__(self…

如何使用FlowUs打造爆款自媒体内容?内容资产管理沉淀的先进工具选息流

FlowUs 是一款流行的在线协作工具,它以其灵活的块编辑器、看板视图、数据库管理等功能受到众多个人和团队的喜爱。将其应用于内容资产管理,尤其是对于追求打造爆款自媒体的创作者而言,可以极大地提升内容创作、组织、分发及分析的效率。 内容…

无刷直流电机(BLDCM)仿真建模

无刷直流电机,即BLDCM在各个行业应用非常广泛。在汽车电子领域,BLDCM被广泛用于电动汽车、混合动力汽车、电动自行车等车辆的驱动系统中。由于BLDCM具有高效率、高力矩密度和快速响应的优势,它可以提供可靠的动力输出,并且可以通过…

JavaScript 动态网页实例 —— 背景效果

页面背景是网页设计中必不可少的重要内容之一,其背景的好坏直接影响网页浏览者的浏览兴趣。网页背景分为背景图和背景色两种,对于普通的背景图和背景色,完全可以通过HTML实现,而要实现复杂的背景效果,则需要借助于JavaScript。本章介绍页面背景的一些实现效果。首先是一个…

idea常用配置 | 快捷注释

idea快速注释 一、类上快速注释 (本方法是IDEA环境自带的,设置特别方便简单易使用) 1、偏好设置->编辑器->文件和代码模版 | File-Settings-Editor-File and Code Templates 2、右下方的“描述”中有相对应的自动注注释配置格式 贴…

力扣 单词规律

所用数据结构 哈希表 核心方法 判断字符串pattern 和字符串s 是否存在一对一的映射关系,按照题意,双向连接的对应规律。 思路以及实现步骤 1.字符串s带有空格,因此需要转换成字符数组进行更方便的操作,将字符串s拆分成单词列表…

Java单体架构项目_云霄外卖-特殊点

项目介绍: 定位: 专门为餐饮企业(餐厅、饭店)定制的一款软件商品 分为: 管理端:外卖商家使用 用户端(微信小程序):点餐用户使用。 功能架构: &#xff08…

Python学习笔记20:进阶篇(九)常见标准库使用之sys模块和re模块

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 错误输出…

电商平台数据爬取经验分享

一、引言 在电商领域,数据的重要性不言而喻。无论是市场趋势分析、竞争对手研究,还是用户行为洞察,都离不开数据的支持。而数据爬虫作为获取这些数据的重要工具,其技术的掌握和运用对于电商平台来说至关重要。本文将结合个人实际…

AI绘画 Stable Diffusion【实战进阶】:图片的创成式填充,竖图秒变横屏壁纸!想怎么扩就怎么扩!

大家好,我是向阳。 所谓图片的创成式填充,就是基于原有图片进行扩展或延展,在保证图片合理性的同时实现与原图片的高度契合。是目前图像处理中常见应用之一。之前大部分都是通过PS工具来处理的。今天我们来看看在AI绘画工具 Stable Diffusio…

架构师篇-7、企业安全架构设计及实践

摘要: 认识企业安全架构企业安全案例分析及实践 内容: 为什么做企业安全架构怎么做好安全架构设计案例实践分析&随堂练 为什么要做企业安全架构 安全是麻烦制造者? 整天提安全需求增加开发工作增加运维要求增加不确定性延后业务上线…