Spring Framework 简介与起源

news2024/11/24 22:45:27

Spring是用于企业Java应用程序开发的最流行的应用程序开发框架。全球数百万开发人员使用Spring Framework创建高性能、易于测试和可重用的代码。

Spring Framework是一个开源的Java平台。它最初由Rod Johnson编写,并于2003年6月在Apache 2.0许可下首次发布。

Spring在大小和透明度方面都非常轻巧。Spring Framework的基本版本大小约为2MB。

Spring Framework的核心功能可用于开发任何Java应用程序,但是还有用于在Java EE平台上构建Web应用程序的扩展。Spring Framework旨在通过启用基于POJO的编程模型来使J2EE开发更易于使用,并促进良好的编程实践。

使用Spring Framework的好处

以下是使用Spring Framework的几个重要好处的列表:

  • Spring使开发人员能够使用POJO开发企业级应用程序。仅使用POJO的好处在于,您不需要EJB容器产品,例如应用程序服务器,但您可以选择仅使用强大的servlet容器,例如Tomcat或某些商业产品。
  • Spring以模块化的方式组织。尽管软件包和类的数量很多,但您只需担心您需要的部分并忽略其余部分。
  • Spring不会重复发明轮子,而是真正利用了一些现有技术,例如多个ORM框架、日志框架、JEE、Quartz和JDK定时器以及其他视图技术。
  • 使用Spring编写的应用程序易于测试,因为环境相关的代码移动到了该框架中。此外,通过使用类似JavaBean的POJO,更容易使用依赖注入来注入测试数据。
  • Spring的Web框架是一个设计良好的Web MVC框架,它提供了一个很好的替代方案,可以替代Struts或其他过度设计或不受欢迎的Web框架。
  • Spring提供了一种方便的API,用于将特定于技术的异常(例如由JDBC、Hibernate或JDO引发的异常)转换为一致的未经检查的异常。
  • 轻量级IoC容器往往非常轻量级,特别是与EJB容器相比。这对于在内存和CPU资源受限的计算机上开发和部署应用程序非常有益。
  • Spring提供了一致的事务管理接口,可缩小到本地事务(例如使用单个数据库)并扩展到全局事务(例如使用JTA)。

依赖注入(DI)

Spring最为人所知的技术是依赖注入(DI)的Inversion of Control(IoC)风格。IoC是一个通用概念,可以用许多不同的方式表达。依赖注入仅是控制反转的一个具体示例。

在编写复杂的Java应用程序时,应用程序类应尽可能独立于其他Java类,以增加重用这些类的可能性并在单元测试时独立于其他类进行测试。依赖注入有助于将这些类粘合在一起,同时保持它们的独立性。

依赖注入可以通过向构造函数传递参数或通过后期构造使用setter方法来实现。由于依赖注入是Spring Framework的核心,因此我们将在单独的章节中使用相关示例解释此概念。

面向切面编程(AOP)

Spring的关键组件之一是面向切面编程(AOP)框架。跨越应用程序多个点的功能称为横切关注点,这些横切关注点在概念上与应用程序的业务逻辑分开。有各种各样的常见优秀例子,包括日志记录、声明性事务、安全性、缓存等。

OOP中的模块化关键单元是类,而AOP中的模块化关键单元是方面。 DI可帮助您将应用程序对象解耦,而AOP可帮助您将横切关注点解耦。

Spring Framework的AOP模块提供了一种面向方面的编程实现,允许您定义方法拦截器和切入点,以清晰地解耦实现应该分开的功能的代码。我们将在单独的章节中讨论更多有关Spring AOP概念的内容。

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注
在这里插入图片描述

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

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

相关文章

laravel日期字段carbon 输出格式转换

/*** The attributes that should be cast.** var array*/ protected $casts [created_at > datetime:Y-m-d, ]; 滑动验证页面https://segmentfault.com/q/1010000043327049

PyQt中QFrame窗口中的组件不显示的原因

文章目录 问题代码(例)原因和解决方法 问题代码(例) from PyQt5.QtWidgets import * from PyQt5.QtGui import QFont, QIcon, QCursor, QPixmap import sysclass FrameToplevel(QFrame):def __init__(self, parentNone):super().…

Newman

近期在复习Postman的基础知识,在小破站上跟着百里老师系统复习了一遍,也做了一些笔记,希望可以给大家一点点启发。 一)如何安装Newman 1、下载并安装NodeJs 在官网下载NodeJs: Download | Node.js(官网的…

首周聚焦百度智能云千帆大模型平台使用,《大模型应用实践》实训营11月16日开讲!

百度智能云千帆大模型平台官方出品的《大模型应用实践》实训营本周正式上线!这是百度智能云推出的首个系列课程,课程内容满满干货! 11月16日本周四即将开课,首周由百度智能云千帆大模型平台产品经理以及百度智能云千帆资深用户知…

DM8数据守护集群安装部署_手动切换

一.安装前准备 1.1 硬件环境建议 数据守护集群安装部署前需要额外注意网络环境和磁盘 IO 配置情况,其他环境配置项建议请参考安装前准备工作。 1.1.1 网络环境 心跳网络对 mal 通讯系统的影响非常大,如果网络丢包或者延迟较大,则会严重影…

Linux C 进程间通信

进程间通信 概述进程间通信方式管道概述管道函数无名管道 pipe有名管道 makefifo删除有名管道 rmove 有名管道实现 双人无序聊天 例子 信号信号概述信号处理过程信号函数传送信号给指定的进程 kill注册信号 signal查询或设置信号处理方式 sigaction设置信号传送闹钟 alarm 有名…

天软特色因子看板 (2023.11 第10期)

该因子看板跟踪天软特色因子A05006(近一月单笔流入流出金额之比(%)该因子为近一个月单笔流入流出金额之比(%)均值因子,用以刻画 市场日内分时成交中流入、流出成交金额的差异性特点,发掘市场主力资金的作用机制。 今日为该因子跟踪第10期,跟踪…

《红蓝攻防对抗实战》十三.内网穿透之利用HTTP协议进行隧道穿透

内网穿透之利用HTTP协议进行隧道穿透 一.前言二.前文推荐三.利用HTTP协议进行隧道穿透1. Reduh进行端口转发2. ReGeorg进行隧道穿透3. Neo-reGeorg加密隧道穿透4. Tunna进行隧道穿透5 .Abptts加密隧道穿透6. Pivotnacci加密隧道穿透 四.本篇总结 一.前言 本文介绍了利用HTTP协…

python 实验7

姓名:轨迹 学号:6666 专业年级:2021级软件工程 班级: 66 实验的准备阶段 (指导教师填写) 课程名称 Python开发与应用 实验名称 文件异常应用 实验目的 (1)掌握基本文件读写的方式; …

基于消息队列+多进程编写的银行模拟系统

银行模拟系统 概述客户端 client.c服务端 serve.c开户 enroll.c存款 save.c转账 transfer.c取款 take.cmakefile文件 概述 该案例大体过程为,服务器先启动,初始化消息队列和信号,用多线程技术启动开户、存钱、转账、取钱模块,并且…

Python基础-解释器安装

一、下载 网址Welcome to Python.orgPython更新到13了,我们安装上一个12版本。 这里我保存到网盘里了,不想从官网下的,可以直接从网盘里下载。 链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间…

IDEA从Gitee拉取代码,推送代码教程

打开IDEA,选择Get from Version Control 输入Gitee 仓库项目的URL地址 URL地址输入后点击Clone,即拉取成功 向Gitee提交推送代码 右键选中项目,选中Git 第一步先点击 Add 第二步 点击Commit填写提交信息,点击Commit就会出现下面…

Jenkins的一些其他操作

Jenkins的一些其他操作 1、代码仓库Gogs的搭建与配置 Gogs 是一款极易搭建的自助 Git 服务,它的目标在于打造一个最简单、快速和轻松的方式搭建 Git 服务。使用 Go 语言开发的它能够通过独立的二进制进行分发,支持了 Go 语言支持的所有平台&#xff0…

Vue修饰符(Vue事件修饰符、Vue按键修饰符)

目录 前言 Vue事件修饰符 列举较常用的事件修饰符 .stop .prevent .capture .once Vue按键修饰符 四个特殊键 获取某个键的按键修饰符 前言 本文介绍Vue修饰符,包括Vue事件修饰符以及按键修饰符 Vue事件修饰符 列举较常用的事件修饰符 .stop: …

【Linux基础IO篇】深入理解文件系统、动静态库

【Linux基础IO篇】深入理解文件系统、动静态库 目录 【Linux基础IO篇】深入理解文件系统、动静态库再次理解文件系统操作系统内存管理模块(基础)操作系统如何管理内存 Linux中task_struct源码结构 动态库和静态库动静态库介绍:生成静态库库搜…

IDEA安装配置SceneBuilder

1、下载 SceneBuilder 地址: Scene Builder - Gluon ​​​​​​​ Scene Builder | JavaFX中文官方网站 选择符合自己系统版本,JAVA版本的下载 2、安装SceneBuilder 执行下载的 SceneBuilder 安装程序,并按照安装向导的指示进行…

Pikachu漏洞练习平台之CSRF(跨站请求伪造)

本质:挟制用户在当前已登录的Web应用程序上执行非本意的操作(由客户端发起) 耐心看完皮卡丘靶场的这个例子你就明白什么是CSRF了 CSRF(get) 使用提示里给的用户和密码进行登录(这里以lili为例) 登录成功后显示用户…

(Matalb时序预测)GWO-BP灰狼算法优化BP神经网络的多维时序回归预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码展示: 四、完整代码数据说明手册下载: 一、程序及算法内容介绍: 基本内容: 本代码基于M…

SSH-远程连接服务器

一、理论知识 目前远程连接服务器的主要类型: 文字接口明文传输:Telnet、RSH 等为主,目前非常少用。文字接口加密:SSH 为主,已经取代上述的 Telnet、RSH 等明文传输方式。图形接口:XDMCP(X Di…

Neo4j数据库介绍及简单使用

图数据库介绍 图数据库是一种专门设计用于存储和管理图形数据的数据库类型。在图数据库中,数据以图的形式表示,其中节点表示实体,边表示实体之间的关系。这种表示方式非常适合处理具有复杂关系的数据,如社交网络、推荐系统、网络…