Spring Framework 简介与起源

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.hqwc.cn/news/178737.html

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

相关文章

Windows本地配置带GPU的Pytorch环境

首先需要安装并配置好Anaconda环境,安装教程教程随便找一个就好。 第一步:安装好之后创建conda虚拟环境: conda create -n your_env_name pythonx.x 第二步:安装需要版本的pytorch:pytorch下载链接 cu100/torch-1.2…

RSS订阅快速连接Notion

数环通让您可以通过不到几分钟的时间即可实现RSS订阅与Notion的对接与集成,从而高效实现工作流程自动化,降本增效! 1.产品介绍 RSS订阅是数环通的内置应用,很多用户通过RSS订阅来收集自己在各大平台上看的内容,当RSS…

xss 通过秘籍

终极测试代码 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT> 第一关&#xff08;没有任何过滤&#xff09; 使用终极测试代码&#xff0c;查看源码 发现没有任何过滤&#xff0c;直接使用javascrupt中的alert弹框 <script>aler…

day27_JS

今日内容 一、JS 一、引言 1.1 JavaScript简介 JavaScript一种解释性脚本语言&#xff0c;是一种动态类型、弱类型、基于原型继承的语言&#xff0c;内置支持类型。它的解释器被称为JavaScript引擎&#xff0c;作为浏览器的一部分&#xff0c;广泛用于客户端的脚本语言&#xf…

【luckfox】3、计算重量差

前言 本章结合之前的hx711驱动&#xff0c;实现读取质量&#xff0c;记录时间及剩余质量并存入csv文件&#xff0c;计算质量差并总计。 代码 luckfox-pico\project\app\test_app\hx711\hx711_app_addtime.c #include <stdio.h> #include <stdlib.h> #include &…

NI USRP RIO软件无线电

NI USRP RIO软件无线电 NI USRP RIO是SDR游戏规则的改变者&#xff0c;它为无线通信设计人员提供了经济实惠的SDR和前所不高的性能&#xff0c;可帮助开发下一代5G无线通信系统。“USRP RIO”是一个术语&#xff0c;用于描述包含FPGA的USRP软件定义无线电设备&#xff0c;例如…

实时level2访问与策略研发

本周四下午4点&#xff0c;天软会聚焦“实时&level2访问与策略研发”开展我们的天软高频时序数仓会议&#xff0c;本次会议的报名客户&#xff0c;可以申请试用LEVEL-2数据测试账号哦~

Spring Framework 核心容器详解:Core、Beans、Context 和 Expression Language 模块

Spring可能成为您的所有企业应用程序的一站式商店。但是&#xff0c;Spring是模块化的&#xff0c;允许您挑选适用于您的模块&#xff0c;而无需引入其他模块。下面的部分提供了Spring Framework中所有可用模块的详细信息。 Spring Framework提供了大约20个模块&#xff0c;可…

业务连续性:确保稳健运营的关键战略

在今天的快节奏商业环境中&#xff0c;保障业务连续性是企业成功的重要保障。业务连续性不仅仅是关于应对自然灾害或技术故障&#xff0c;更是一项战略&#xff0c;涉及组织的整体准备、规划和应对能力&#xff0c;以确保在各种情况下业务的稳健运营。 一、业务连续性的定义 业…

matplotlib绘图

介绍 在官网上有更多种类的图型的绘制方法 matpoltlib中文官方文档&#xff1a;例子_Matplotlib 中文网 matpoltlib英文官方文档&#xff1a;Examples — Matplotlib 3.8.1 documentation 分类 一、折线图 1、要实现的功能&#xff1a; 2、实例&#xff1a; # 导入包 from…

每天学习一点点之从 SonarQube Bug 看对线程中断异常的处理

最近在基于 SonarQube 对代码进行质量优化&#xff0c;说实话&#xff0c;之前觉得 SonarQube 这种很无聊&#xff0c;但最近静下心来看了一些扫描出来的问题后&#xff0c;发现这种工具作用还是挺大的&#xff0c;能够帮助我们找到代码中的隐藏缺陷&#xff0c;从而夯实基础。…