Spring框架介绍

开篇提问

  1. 什么是Spring
  2. 为什么要使用Spring?

1. 什么是Spring?

摘自百度百科

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

我对Spring的理解

Spring是一个开源框架,其实更像是java语言的一个生态,是服务端开发的基石。因为我们使用的Spring Boot、Spring Cloud、Spring Batch等框架都是以Spring为基础进行开发的。
Spring中非常重要的核心功能是IOCAOP

什么是IOC?什么是DI?

IOC(Inversion Of Controll,控制反转) 是一种设计思想,将原本在程序中手动创建对象的控制权,交由给Spring框架来管理。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个Map(key, value),Map中存放的是各种对象。

这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来。IOC容器就像一个水桶,管理的对象是水桶中的水。当需要创建一个对象,只需要配置好配置文件/注解即可,不用考虑对象是如何被创建出来的,大大增加了项目的可维护性且降低了开发难度。

对象管理方式对比
从上图可以看到传统方式管理对象需要客户端维护对象之间的依赖关系。由应用主动管理对象的方式可以称为是控制正转(只是为了区分控制反转自己想到的名称,并不是官方解释)。

在使用IOC容器后,应用不再管理对象,而把对象的管理工作交给了IOC容器处理,这样客户端在使用对象时就无需关心对象之间依赖关系。使应用的正向操作更简单

IOC和DI的区别

IOC是一种实现思想,DI是具体的实现方式。它们是同一个概念不同角度的描述,只是他们的描述方向不一样

控制反转是从容器方面,容器控制应用程序的创建,并且为其提供需要调用的外部资源。
依赖注入是从应用程序方面,应用程序依赖容器进行创建,并且注入它所需要的外部资源

什么是AOP?

AOP(Aspect Orient Programming),翻译过来的意思是面向切面编程,是对面向对象编程的一个补充。
当需要增加非业务功能时,比如记录日志、上报埋点、权限拦截、参数校验等通用的功能时,使用切面编程可以与业务代码解耦。
AOP常用功能
举个例子:
当我们提供Controller接口时,对公共的参数做非空条件校验。
AOP对比
不使用AOP时接口需要执行校验逻辑,如果把校验逻辑封装到AOP切面中,接口则无需关心校验参数功能,AOP可以做到一处编写,多处使用,从而让研发更专注于业务功能,通用功能交给AOP处理

2. 为什么使用Spring?

Spring是一个成熟的轻量级框架,开发Java应用程序提供了完整的基础架构支持,能够帮助研发快速搭建一个服务端应用。
通过上面对于IOC和AOP的介绍,对于Spring框架有了基础认识,上面介绍的只是Spring的核心功能。能够帮助研发更专注与业务,基础功能交给Spring来管理。

官网描述

官网对于Spring的描述

翻译:
官网链接:https://spring.io/why-spring

Spring使用范围广
Spring 的灵活库受到全世界开发人员的信赖。Spring 每天为数百万最终用户提供令人愉悦的体验——无论是流媒体电视,网上购物,或无数其他创新解决方案。Spring 也有来自所有科技巨头的贡献,包括阿里巴巴、亚马逊、谷歌、微软等。

Spring灵活性高
Spring 灵活而全面的扩展集和第三方库让开发人员可以构建几乎任何可以想象的应用程序。Spring 框架的核心是控制反转 (IoC)和依赖注入 (DI)特性为广泛的特性和功能集提供了基础。无论您是为 Web 构建安全、反应式、基于云的微服务,还是为企业构建复杂的流数据流,Spring 都有可以提供帮助的工具。

Spring开发速度快
Spring Boot改变您处理 Java 编程任务的方式,从根本上简化您的体验。Spring Boot 结合了应用程序上下文和自动配置的嵌入式 Web 服务器等必需品,微服务发展小菜一碟。为了更快,您可以将 Spring Boot 与 Spring Cloud 丰富的支持库、服务器、模式和模板集相结合,以安全地将整个基于微服务的架构部署到云,在创纪录的时间内。

Spring运行速度快
我们的工程师非常关心性能。使用 Spring,您会注意到默认情况下快速启动、快速关闭和优化执行。Spring 项目也越来越多地支持反应式(非阻塞)编程模型,效率更高。开发人员的生产力是 Spring 的超能力。Spring Boot 可帮助开发人员轻松构建应用程序,并且比其他竞争范式更省力。嵌入式 Web 服务器、自动配置和“fat jars”可帮助您快速入门,创新如Spring DevTools 中的 LiveReload意味着开发人员可以比以往更快地迭代。您甚至可以在几秒钟内启动一个新的 Spring 项目,Spring Initializr 位于start.spring.io.

Spring安全性高
Spring 在快速、负责任地处理安全问题方面有着良好的记录。Spring 提交者与安全专家合作,修补和测试任何报告的漏洞。第三方依赖项也受到密切监控,并定期发布更新以帮助确保您的数据和应用程序尽可能安全。此外,Spring Security让您更轻松地与行业标准的安全方案集成,并提供默认安全的值得信赖的解决方案。

Spring社区活跃
Spring 社区是巨大的、全球性的、多样化的,涵盖了所有年龄和能力的人,从完全的初学者到经验丰富的专业人士。无论您在旅途中的哪个阶段,都可以找到使您更上一层楼所需的支持和资源:快速入门,指南和教程,视频,聚会,支持,甚至是正式的培训和认证.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring框架是一个流行的开源应用框架,它能解决许多问题。它以"bean工厂"为核心,通过轻量级控制反转(IoC)来实现。在Spring框架中,应用对象可以被声明式地组合,通常是在一个XML文件中进行配置。Spring还提供了许多基础功能,如事务管理和持久化框架集成,它将应用逻辑的开发留给开发者。Spring框架非常轻量,可以在一个大小只有1MB多的JAR文件中发布。此外,Spring框架的处理开销也非常小。它还是非侵入式的,这意味着Spring应用中的对象不依赖于Spring的特定类。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [计算机专业Java外文翻译 中文+英文(Spring框架介绍)](https://download.csdn.net/download/IT_YQG_/86566000)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring框架介绍](https://blog.csdn.net/weixin_57849985/article/details/121779021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值