Spring简介

一:Spring是什么

Spring是分层的Java SE/EE应用full-stack(各层都有对应解决方案)轻量级(api较少,学习成本较低)开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming: 面向切面编程)为内核。

提供了展现层SpringMVC持久层SPringle JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。

二:Spring发展历程

1997年,IBM提出了EJB的思想
1998年,SUN制定开发标准规范EJB1.0
1999年,EJB1.1发布
2001年,EJB2.0发布
2003年,EJB2.1发布
2006年,EJB3.0发布

Rod Johnson(Spring之父)

Expert One-to-One J2EE Design and development(2002)阐述了J2EE使用EJB开发设计的优点及解决方案
Expert One-to-One J2EE Development with EJB(2004)阐述了J2EE开发不使用EJB的解决方式(Spring雏形)

2023年发表了spring的最新版本,spring6.0

三:Spring的优势

1)方便解耦,简化开发

通过Spring提供的IOC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合。
用户也不必在为单例模式类,属性文件解析等这些和底层的需求编写代码,可以更专注于上层的应用。

2)AOP编码的支持

通过Spring的AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过aop轻松实现。

3)声明式事务的支持

我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。

4)方便程序的测试

可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。

5)方便集成各种优秀框架

Spring对各种优秀框架(Struts,Hibernate,Hessian,Quartz等)的支持。

6)降低JavaEE API的使用难度

Spring对JavaEE API(如JDBC,JavaMail.远程调用等)进行了薄薄的封装层,使这些API的使用难度大为降低。

7)Java源码是经典学习范例

Spring的源代码设计精妙,结构清晰,匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。它的源代码无疑是java技术的最佳实践的范例。

四:Spring的体系结构

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

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

相关文章

最新Unity DOTS Physics物理引擎碰撞事件处理

最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics物理引擎的主要流程与Pipeline Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来…

基于SpringBoot简洁优雅的个人博客系统

源代码下载地址: 点击这里下载 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或…

java八股jvm

JVM虚拟机篇-01-JVM介绍、运行流程_哔哩哔哩_bilibili 1.PC程序计数器 2.堆 3.虚拟机栈 4.方法区/永久代/元空间 5.直接内存 JVM虚拟机篇-06-JVM组成-你听过直接内存吗_哔哩哔哩_bilibili 6.双亲委派 从下往上找,有同名类优先使用上级加载器的,不用自…

【SpringBoot篇】基于Redis实现生成全局唯一ID的方法

文章目录 🍔生成全局唯一ID🌹为什么要生成全局唯一id🌺生成全局id的方法✨代码实现 🍔生成全局唯一ID 是一种在分布式系统下用来生成全局唯一id的工具 在项目中生成全局唯一ID有很多好处,其中包括: 数据…

***linux 配置服务开机自启动

目录 一、如何让一个服务或脚本开机自启动? 1. 三种解决方案 2. systemd 和 chkconfig 二、chkconfig 1. chkconfig 管理服务脚本要求 2. chkconfig命令 三、Linux 运行级别 四、参考 linux 配置服务开机自启动(systemd 和 chkconfig --add 设置…

sql-labs服务器结构

双层服务器结构 一个是tomcat的jsp服务器,一个是apache的php服务器,提供服务的是php服务器,只是tomcat向php服务器请求数据,php服务器返回数据给tomcat。 此处的29-32关都是这个结构,不是用docker拉取的镜像要搭建一下…

【Python】异常、模块与包

一、异常的概念 二、异常的捕获方法 三、异常的传递 四、Python模块 五、Python包 六、安装第三方Python包 一、异常的概念 什么是异常: 异常就是程序运行的过程中出现了错误bug是什么意思: bug就是指异常的意思,因为历史因为小虫子导致计算…

java.lang.NullPointerException出现的原因及解决方案

java.lang.NullPointerException出现的原因及解决方案 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在编程的世界里,我们常常遇到NullPointerExceptio…

ansible-playbook的Temlates模块 tags模块 Roles模块

Temlates模块 jinja模板架构,通过模板可以实现向模板文件传参(python转义)把占位符参数传到配置文件中去,生产一个目标文本文件,传递变量到需要的配置文件当中 (web开发) nginx.conf.j2 早文件当中配置的是占位符(声明…

Error in `arrange()`: ! Can‘t transform a data frame with `NA` or `““` names.

问题:给Taxonomy排序,并筛选OTU表中存在的 根据提示运行:rlang::last_error(),显示: Backtrace:▆1. ├─dplyr::arrange(taxonomy, phylum, class, order, family, full)2. ├─dplyr:::arrange.data.frame(taxonom…

【SpringBoot篇】解决缓存击穿问题① — 基于互斥锁方式

文章目录 🌹什么是缓存击穿🌺基于互斥锁解决问题🛸思路 🏳️‍🌈代码实现 🌹什么是缓存击穿 缓存击穿是指在使用缓存系统时,对一个热点数据的高并发请求导致缓存失效,多个请求同时访…

云渲染怎么批量效果图、影视动画?云渲染在效果图、影视的作用

在设计和建筑领域,设计师往往需要制作出精细逼真的效果图以向客户展示他们的设计思路。然而,在这些行业中,大量生成效果图需求非常费时费力。幸运的是,日期到了云渲染的这个时代,设计师们可以通过云渲染服务以一种更加…

小程序面试题 | 12.精选小程序面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

帕累托森林CEO李朝政博士受邀「OSS-Compass」开源年会畅谈:开源框架下的奇异竞争规则

导语 “怎么在别人知道你的代码和战略时,你仍然拥有壁垒?”这是开源框架下,商业必须思考的问题。 软件驱动世界运转。但当基础层代码失去了有深度活力的“动态延伸”潜力,便会遭致市场“零定价”的宿命。动态延伸的效率&#xf…

用html,css和js写购物车移动端加减全反选及计算总价

目录 html代码 css代码 js代码 完整代码 效果图 html代码 <script src"./flexible.js"></script><!-- <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> --><div class"header">…

极智芯 | 剖析英伟达H100的利润空间

欢迎关注我的公众号「极智视界」,获取我的更多技术分享 大家好,我是极智视界,本文分享一下 剖析英伟达H100的利润空间。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 马克思在《资本论》第一卷中写道…

基于iOS平台的车牌识别表情识别项目

基于iOS平台的车牌识别&&表情识别项目 简介 ​ 该项目客户端搭载于iOS平台&#xff0c;服务端搭载于阿里云服务器&#xff0c;主要功能是通过拍照或选取相册图片来进行车牌的识别以及人脸表情识别。本文便是对项目整体流程设计思路和具体实现做一个详细介绍。 整体实…

Android App程序应用未校验签名证书——————《风险等级高》

目录 应用签名未校验风险1、检测目的2、风险等级3、检测依据4、风险描述5、检测步骤6、结果描述7、解决方案7.1、Android 检验 APK 是否签名的代码7.2、检验APK签名 8、结尾 应用签名未校验风险 1、检测目的 检测App程序启动时是否校验签名证书。 防止App的盗版率。未进行签…

微软推出了GPT-RAG:这是一个机器学习库,为在Azure OpenAI上使用RAG模式生产部署大型语言模型(LLMs)提供了企业级参考架构

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Set A Light 3D Studio for Mac - 构建逼真的照明场景!

Set A Light 3D Studio 是一款专业的照明设计和模拟软件&#xff0c;旨在帮助摄影师、电影制片人和视觉艺术家创建逼真的照明场景。无论你是在拍摄电影、广告、时尚杂志还是其他视觉艺术项目&#xff0c;这个软件都能帮助你实现你的创意想法。 Set A Light 3D Studio Mac版 ✨…