《Spring6》第01节:Spring介绍以及为什么使用Spring框架
ccwgpt 2024-10-11 11:14 42 浏览 0 评论
《Spring6》第01节:Spring介绍以及为什么使用Spring框架
从这篇文章开始,我将介绍一下自己学习Spring6框架相关的笔记内容,结合本人自身学习Spring框架的经验,给大家梳理一下Spring中的常用知识点,希望可以让新手开发人员快速入门Spring框架。
1.1、Spring框架介绍
目前Spring是Java应用领域中使用最为广泛的框架,早期Spring只是单纯的指代Spring框架而已,但是随着Spring的不断发展,目前Spring已经是一个框架体系,不再单纯指代某一个单一框架,而是许多框架的统称,这些框架都是基于Spring衍生而来,例如:Spring、SpringMVC、Spring Data、Spring Batch等等框架。
2002年,作者Rod Johnson首次提出了Spring框架的相关设计思想及概念,并且在2003年推出了Spring的第一个框架,Spring框架目前已经发展到了Spring6.x版本,不同版本存在不同新特性。
- Spring1.x版本
引入IOC容器、依赖注入、AOP切面编程,基于XML的方式进行开发,这种开发模式下需要编写很多的XML配置信息,比较繁琐复杂。
- Spring2.x版本
引入了注解的配置方式,增强了对 Java EE 规范的支持,如 JPA、JMS 等,这种模式下,我们只需要编写少量的XML配置信息,使用注解即可完成Spring程序的代码开发。
- Spring3.x版本
引入了基于Java代码的配置方式,全面支持 Java 5 及以上版本的新特性,如泛型、注解等。提供了更强大的表达式语言(SpEL),方便在配置和运行时进行动态计算。
- Spring4.x版本
对 Java 8 的新特性进行了深度支持,如 Lambda 表达式、函数式接口等。
- Spring5.x版本
全面支持反应式编程,提供了 WebFlux 框架,用于构建非阻塞、高性能的 Web 应用。支持 HTTP/2,提升了 Web 应用的性能和效率。对 Java EE 的支持更加灵活,可在独立环境下运行,不依赖于传统的 Java EE 服务器。
- Spring6.x版本
性能优化,包括更高效的依赖注入机制、改进的 AOP 实现以及优化的事务管理。对 Java 最新版本的支持更加完善,充分利用 Java 的新特性,如记录类、模式匹配增强等。提供了更便捷的开发工具和功能,如新的自动配置功能。
目前,基于XML的配置方式是早期的开发模式,现在已经不使用了,使用最多的方式就是基于注解的配置方式。
1.2、传统开发模式
在没有出现Spring框架之前,大部分企业采用的是Java+Servlet+JSP、EJB (Enterprise JavaBeans)、Struts 1.x等开发模式,这几种模式下,开发的代码都比较的复杂,开发一个应用程序效率非常低,一旦出现问题,排查问题还比较费劲。本人比较幸运,没有经历过这一阶段,我刚入工作时候,只接触过了个别Java+Servlet+JSP的项目,之后都是采用Spring框架开发的项目。这里我们来看下没用Spring框架开发的项目中,代码存在的一些问题。
举个例子:
- 在Java+Servlet+JSP开发模式下,对象的创建,都是在需要使用的地方,主动通过new关键字创建出来的。
- 假设:AService类中存在一个sayHello()方法,BService类中demo01()方法需要调用AService的sayHello()方法,那么代码就会如下所示。
package com.spring.study;
public class AService {
public void sayHello() {
System.out.println("hello");
}
}
public class BService {
public void demo01() {
// 创建对象
AService aService = new AService();
// 调用方法
aService.sayHello();
}
}
- 从上面代码上来看,这么写是没有什么问题的,但是我们想一下,这只是BService类调用一次AService类中方法,如果其他的类也要使用这个方法,那是不是其他的类也需要先通过new AService()创建出A对象,然后才可以调用。10个地方调用就要创建10次对象,100个地方调用就要创建100次对象,依此类推,可以发现,多个地方调用对应方法,就需要创建相应的对象。
- 但是针对这个代码来说,不管对象多少个对象,结果都是一样的,都只是单纯的要调用sayHello()方法,创建1次和创建100次对象没啥区别,反而不断创建代码还会使代码更加冗余复杂。
- 另外,在不同的地方创建对象,也会增加代码之间的耦合性,如果AService需要升级成AServiceV2版本,那么使用到AService类的地方,都需要一起改动,那这个改动量就非常大了。
1.3、Spring如何解决上面问题
Spring框架很好的解决了传统开发模式的弊端,并且还简化了应用程序的开发,我们来看看Spring是如何解决上面两个问题。
- 通过new创建对象问题
针对创建对象的这个问题,Spring是这样解决的,既然大部分对象只需要创建一次就可以了,那么是不是可以在程序启动的时候,就将整个项目中需要使用的对象全部初始化创建完成,接着保存到一个Map集合里面,后续在需要使用的地方,直接通过key从Map集合获取即可。
Spring没有使用new关键字创建对象,而是采用工厂模式和反射机制创建相应的对象,创建的对象直接保存在一个Map容器里面,这个容器就是Spring框架中的IOC容器,也是Spring核心功能之一。
- 代码耦合性问题
对于代码之间的耦合性问题,Spring通过依赖注入的方式完美解决,这里就需要引入一个新的概念:依赖注入Dependency Injection,简称:DI。什么是依赖注入呢?依赖注入就是Spring会主动给当前类中的属性赋值。例如:BService类中需要使用AService对象,那么Spring就会将AService对象赋值给BService类中的aService属性。案例代码如下:
package com.spring.study;
/**
* @author ZhuYouBin
* @version 1.0.0
* @date 2024/8/19 17:21
* @description
*/
public class BService {
// Spring通过依赖注入当前对象
private AService aService;
public void demo01() {
// 调用方法
aService.sayHello();
}
}
以上就是我对Spring框架的一个入门介绍,可能说的不是很详细,只是先对Spring大概有个了解,下一小节我们就开始进入Spring6的实战环节,来看下使用Spring6开发应用到底有多简单。
今天就到这里,未完待续~~
相关推荐
- 谷歌正在为Play商店进行Material Design改造
-
谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...
- 企业网站免费搭建,定制化建站CMS系统
-
科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...
- 您需要的 11 个免费 Chrome 扩展程序
-
来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...
- 户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案
-
在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。 从其结构设计来看,矩形框架虽主要为适配紧凑空...
- 一个基于NetCore开发的前后端分离CMS系统
-
今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...
- 本地Docker部署ZFile网盘打造个人云存储
-
前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...
- pcfcms企业建站系统 免费+开源的企业内容管理系统
-
项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...
- 【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...
- java开源cms管理系统框架PublicCMS后台管理系统
-
一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...
- 一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!
-
一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...
- 《搜神札记》:不应磨灭的惊奇(小说《搜神记》)
-
□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...
- 《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)
-
“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...
- 《助人技术》第一章助人引论内容框架
-
第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...
- AI助手重构读后感写作流程:从提纲到完整性思考的转换
-
大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...
- 图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)
-
做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)