【Spring】 ——初识Spring

简介: 【Spring】 ——初识Spring

【Spring】 ——初识Spring

Spring学习思维导图(仅供参考),如有需要可以到我的资源自行下载

image.png

一、为什么学Spring🍭

官方解释🧁

Spring官网

解释🧁

  1. 广泛应用:Spring框架是Java开发中最广泛应用的框架之一。许多企业和组织都在使用Spring构建他们的应用程序。通过学习Spring,你将掌握一项被业界广泛认可和应用的技能,提高就业竞争力。
  2. 简化开发:Spring框架提供了简化和优化Java开发的工具和技术。它采用了约定优于配置的原则,通过提供易于使用的API和开发模型,减少了开发者的工作量和复杂性。学习Spring可以让你更高效地开发应用程序,并提升开发效率。

image.png

  1. 提高代码质量:Spring框架倡导松耦合、面向接口编程和依赖注入等良好的编程实践。通过使用Spring,你可以编写可测试、可维护和可扩展的代码。它提供了强大的支持和工具,如依赖注入容器、面向切面编程和测试框架等,帮助你编写高质量的代码。
  2. 丰富的功能和扩展模块:Spring框架提供了众多的功能和扩展模块,涵盖了各个领域和应用场景。无论是Web开发、数据访问、安全性还是微服务架构,Spring都有相应的解决方案和支持。学习Spring可以让你了解和掌握这些丰富的功能和模块,为不同的开发需求提供最佳的解决方案。

image.png

image.png

  1. 社区和支持:Spring框架拥有庞大的开发者社区和活跃的支持体系。你可以通过官方文档、论坛、博客和社交媒体等渠道获取丰富的学习资源和经验分享。在学习和使用Spring的过程中,你可以与其他开发者交流和互动,共同解决问题和提升技能。
  2. 市场占有率也高;

image.png

所以,综上所述,Spring值得我们去学习,更值得我们去好好学!

二、Spring是什么🍭

image.png

Spring是一个开源的Java应用框架,它提供了一套全面的解决方案,用于开发企业级Java应用程序。Spring框架旨在简化Java开发,并提供了一种灵活且非侵入式的编程模型,帮助开发人员构建可扩展、模块化和可维护的应用程序。

1、核心特点🧁

Spring框架的核心特点包括:

  1. 轻量级:Spring框架采用了松耦合的设计理念,不强制依赖于特定的容器或服务器,可以灵活地集成到各种环境中。
  2. 非侵入性:Spring框架通过基于接口的编程和依赖注入(DI)的方式,使应用程序代码与框架代码解耦,不需要继承特定的基类或实现特定的接口。
  3. 面向切面编程(AOP):Spring框架提供了对AOP的支持,可以通过配置的方式将横切关注点(如日志、事务管理等)与业务逻辑分离,提高代码的重用性和可维护性。
  4. 控制反转(IoC,Inversion of Control)和依赖注入(DI,Dependency Injection):Spring框架通过IoC容器管理对象的生命周期和依赖关系,将对象的创建和依赖注入交由框架负责,降低了组件之间的耦合度。
  5. 集成多种技术:Spring框架与其他流行的Java技术(如Hibernate、MyBatis、JDBC等)紧密集成,提供了对数据库访问、事务管理、Web开发、消息传递等方面的支持。

image.png

Ⅰ、控制反转(IoC)和依赖注入(DI)🍬

image.png

我们通常⽤⼀句话概括 Spring:Spring 是包含了众多⼯具⽅法的 IoC 容器。

从这句话可以看出Spring框架的核心特点中,最重要的一点是控制反转(IoC)和依赖注入(DI)。这是Spring框架的基石,也是它与传统的编程模型的最大区别。

控制反转(IoC,Inversion of Control)意味着将对象的创建和依赖关系的管理交由框架来负责,而不是由开发人员手动管理。传统的编程模型中,开发人员需要自己创建和管理对象的生命周期,导致代码与对象的创建和依赖关系紧密耦合,难以维护和扩展。

依赖注入(DI,Dependency Injection)是控制反转的一种实现方式,通过将对象的依赖关系注入到对象中,使对象能够获取所需的依赖,而无需自己创建和管理依赖对象。依赖注入通过配置文件或注解的方式,将对象之间的依赖关系描述清楚,并由框架负责解析和注入。

控制反转和依赖注入的好处是解耦和灵活性。它们使得应用程序的各个组件之间的依赖关系变得松散,减少了组件之间的耦合度。开发人员只需关注业务逻辑的实现,而不必担心对象的创建和依赖关系的管理。这样可以使代码更加可读、可维护和可扩展,同时也便于进行单元测试和模块替换。

那知道了loC和DI,总结一下它们有什么区别: 依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利用依赖关系注⼊的方式,实现对象之间的解耦。 IoC 是“目标”也是⼀种思想,而⽬标和思想只是⼀种指导原则,最终还是要有可⾏的落地⽅案,而DI 就属于具体的实现。

什么是容器?

容器是用来容纳某种物品的(基本)装置。 ——来自:百度百科

我们想想,之前我们接触的容器有哪些?

  • List/Map -> 数据存储容器
  • Tomcat -> Web 容器

既然 Spring 是⼀个 IoC容器,重点应该是在“容器”⼆字上,那么它就具备两个最基础的功能:

  • 将对象存入到容器;
  • 从容器中取出对象

所以 Spring 是⼀个 IoC 容器,说的是对象的创建和销毁的权利都交给 Spring 来管理了,它本身⼜具备了存储对象和获取对象的能⼒。

2、目标🧁

Spring框架的目标是提供一个全面而灵活的解决方案,帮助开发者构建可靠、高效和可扩展的企业级应用程序。以下是Spring框架的主要目标:

  1. 简化开发:Spring致力于简化Java开发过程,通过提供易于使用的编程模型和简化的API,减少开发者的工作量和复杂性。
  2. 降低耦合:Spring鼓励松耦合的设计,使各个组件之间的依赖关系更加灵活和可配置。通过控制反转(IoC)和依赖注入(DI)的机制,Spring使对象之间的依赖关系被外部容器管理,提高了代码的可测试性、可维护性和可扩展性。
  3. 提供一致的抽象层:Spring为各种技术和框架提供了一致的抽象层,使开发者能够以统一的方式使用它们。
  4. 提高应用性能:Spring框架通过提供缓存、连接池、批处理和异步处理等机制,帮助开发者优化应用程序的性能和资源利用率。
  5. 促进代码的可测试性:Spring框架鼓励编写可测试的代码,通过依赖注入和面向接口的编程,使单元测试和集成测试变得更加容易。。
  6. 提供丰富的功能扩展:Spring框架提供了众多的模块和扩展,如Spring MVC、Spring Security、Spring Data和Spring Integration等,覆盖了各个领域和应用场景。

通过实现这些目标,Spring框架已经成为Java开发中最受欢迎和广泛应用的框架之一,为开发者提供了强大的工具和解决

三、Spring的历史🍭

1、历史由来🧁

image.png

Spring框架的发展历史可以追溯到2002年,它起源于Rod Johnson所著的《Expert One-on-One J2EE Design and Development》一书中提出的一种轻量级的Java开发框架概念。随后,Rod Johnson与其他开发者共同创建了Spring框架,并于2004年发布了第一个正式版本。

最初的Spring框架旨在解决传统的企业级Java开发中的一些问题,如复杂的配置、紧耦合的代码和难以进行单元测试等。它引入了控制反转(IoC)和面向切面编程(AOP)等核心概念,通过IoC容器来管理对象之间的依赖关系,并提供了AOP支持来实现横切关注点的模块化。

随着时间的推移,Spring框架不断演进和发展。在2006年,Spring 2.0发布,引入了新的功能和改进,如注解驱动的开发模型、Spring MVC框架和对Java 5特性的支持。这些变化使得Spring更加易用和强大,并赢得了更广泛的开发者支持和认可。

在2013年,Spring团队发布了一项重要的创新——Spring Boot。Spring Boot旨在简化Spring应用程序的配置和部署,通过提供自动配置、约定优于配置和快速集成等特性,使开发者能够更快地搭建起一个可运行的应用程序。Spring Boot的出现进一步推动了Spring框架的普及和流行。

随着时间的推移,Spring框架继续进行版本迭代和功能扩展,不断适应新的技术和开发需求。Spring框架的生态系统也变得更加丰富和多样化,涵盖了众多的扩展模块和第三方库,如Spring Security、Spring Data和Spring Cloud等,为开发者提供了更多的选择和解决方案。

至今为止,Spring框架已经成为Java开发中最受欢迎和广泛应用的框架之一。它不仅为企业级应用程序提供了强大的支持,还在各个领域和规模的应用开发中发挥着重要作用,为开发者提供了高效、可靠和可扩展的解决方案。

2、Spring版本迭代的过程🧁

Spring框架的版本迭代带来了许多新特性和改进,以下是一些主要版本的特点:

image.png

  1. Spring 1.x:Spring框架的最初版本,引入了核心概念如控制反转(IoC)和面向切面编程(AOP)。它通过解耦和简化企业级Java开发,提供了更灵活和可测试的代码编写方式。
  2. Spring 2.x:引入了许多重要的功能和改进,包括注解驱动的开发模型、全面支持Java 5特性(如泛型、枚举和注解)、Spring MVC框架的引入以及对AspectJ的集成等。
  3. Spring 3.x:在Spring 3版本中,主要关注于Java EE 6的支持和Web开发的改进。它引入了Java配置(JavaConfig)替代XML配置的方式,提供了更简洁和类型安全的配置方式。此外,Spring 3还增强了对RESTful Web服务、Servlet 3.0规范和WebSocket的支持。
  4. Spring 4.x:主要关注于对Java 8和Java EE 7的支持。Spring 4框架对Java 8的新特性进行了整合,如Lambda表达式、Stream API等。同时,它还增强了对WebSocket、HTML5和异步编程的支持,并对Spring MVC和Spring Security进行了改进。
  5. Spring 5.x:引入了一些重要的变化和功能增强。其中最显著的改变是对Java 8及以上版本的支持,对响应式编程模型的引入以及对Spring WebFlux框架的推出。Spring 5还提供了对Reactive Streams、Spring Boot 2和Spring Cloud的集成支持。

image.png

四、Spring可以干什么🍭

说了这么多,那Spring可以干什么?🐱

Spring框架在各个领域和应用场景中都得到了广泛的应用:

  1. 企业应用开发:Spring框架是构建企业级应用程序的首选框架之一。它提供了丰富的功能和组件,如依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问和集成等,使开发者能够轻松构建可靠、高效和可扩展的企业级应用。
  2. Web开发:Spring MVC是Spring框架的Web开发模块,它提供了一个灵活而强大的MVC(模型-视图-控制器)架构,用于构建Web应用程序和RESTful API。Spring MVC支持注解驱动的开发模式、请求处理、表单验证、文件上传等功能,使Web开发变得简单和高效。
  3. 微服务架构:Spring框架与Spring Boot和Spring Cloud等技术相结合,成为构建微服务架构的理想选择。Spring Boot简化了微服务的配置和部署,Spring Cloud提供了一系列的解决方案,如服务注册与发现、负载均衡、断路器模式等,帮助开发者构建弹性、可伸缩和可靠的微服务应用。
  4. 数据访问:Spring框架为数据访问提供了多种选择和支持。它整合了多种数据访问技术,如Spring JDBC、Spring ORM(如Hibernate、MyBatis)和Spring Data等,使开发者能够以统一的方式进行数据库操作和持久化。
  5. 批处理和调度:Spring框架提供了批处理和调度的支持,使开发者能够处理大量的数据处理和定时任务。通过Spring Batch模块,开发者可以编写批处理作业,并进行任务调度和监控。同时,Spring框架还集成了调度器(如Quartz),使开发者能够轻松实现定时任务的管理和执行。
  6. 消息队列和异步处理:Spring框架提供了对消息队列和异步处理的支持。通过集成消息中间件(如ActiveMQ、RabbitMQ)和异步处理框架(如Spring Async),开发者可以实现解耦、高性能的消息传递和异步处理,提升系统的响应性和可伸缩性。

除了上述领域,Spring框架还在安全性、缓存、搜索、国际化和日志等方面提供了丰富的解决方案和支持。无论是大型企业级应用还是中小型的Web应用,Spring框架都能够提供强大的支持和灵活性。


相关文章
|
4月前
|
XML Java 开发者
【Spring】Spring是什么?
【Spring】Spring是什么?
【Spring】Spring是什么?
|
14天前
|
缓存 前端开发 Java
|
5月前
|
Java 应用服务中间件 程序员
spring
spring
37 0
|
6月前
|
Java Spring 容器
Spring中那些BeanFactoryPostProcessors详解(一)
Spring中那些BeanFactoryPostProcessors详解(一)
26 0
|
8月前
|
Java 数据库连接 Spring
|
9月前
|
存储 XML Java
|
Java Spring 容器
Spring(二)
Spring(二)
76 0
Spring(二)
|
缓存 前端开发 安全
Spring
Spring
306 0
|
存储 Java 测试技术
Spring-AliasRegistry
使用Spring 的时候我们可以很容易的为某个bean 配置一个或多个别名
165 0