百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

《Spring6》第01节:Spring介绍以及为什么使用Spring框架

ccwgpt 2024-10-11 11:14 55 浏览 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+JSPEJB (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开发应用到底有多简单。

今天就到这里,未完待续~~

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: