您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

Spring、SpringBoot和SpringCloud的基础入门

时间:2022-09-04 11:20:15  来源:网易号  作者:编程侠

JAVA项目开发过程中,我们常常会使用开源的基础框架再引入一些中间件来快速的搭建一个项目,然后进行二次开发。先说中间件,有我们比较常用的RabbitMQ/RocketMQ/Kafka、redis、Dubbo、Zookeeper等等。再说核心基础框架,现在比较通用的是Spring、SpringBoot和SpringCloud。那么今天我们按照Spring、SpringBoot、SpringCloud这个顺序来认识一下Spring家族以及他们各自扮演的角色。


 

一、Spring框架(Spring Framework


 

Spring是一个轻量级的容器框架。这个框架最初是为了解决EJB开发笨重臃肿的问题,Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情,为J2EE提供了另一种简单又实用的解决方案,Spring被认为是一个低成本、安全、灵活的框架。Spring提高了编码效率并减少了整体开发时间,因为它是轻量级的,有效地使用系统资源并提供了出色的开发体验。Spring消除了繁琐的配置工作,让开发人员可以专注于创建有效的业务逻辑。Spring负责基础设施,以便开发人员可以专注于应用程序。它的主要特点就是面向切面(AOP)和控制反转(IOC)。

补充说明:EJB属于分布式开发,但是目前市场中小型企业都是非分布式项目,所以为了应市场要求,springBoot横空出世,恰恰解决了中小企业的问题,springBoot诞生就是市场的应召的微服务。举个例子,EJB就是导弹,专门设计为打高空飞机。但是现在发现飞机不多。于是将它用来对付步兵,这个实在太糟糕了。这个时候有人发明了狙击步枪(Spring),发现对付步兵使用阻击步枪太好用了。这里面导弹和阻击步枪都可以实现打步兵的目的,但使用导弹代价太高。狙击枪才是最好的选择。

搭建纯Spring项目Demo步骤。

1.使用idea构造一个Spring项目,命名为SpringDemo,会自动加载jar包,在SpringDemo项目的lib目录下

2.在src目录下建立两级目录com.cn,并在此目录下编写一个接口Api,和两个接口实现类ApiImplOne,ApiImplTwo。


 

3.在src目录下编写Spring的配置文件ApplicationContext.xml(这里不考虑数据库的配置等)


 

4.编写测试类TestDemo,运行,查看控制台打印结果


 

二、SpringBoot框架

SpringBoot是Spring的升级版,Spring Boot 基本上是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的 XML配置,为更快,更高效的开发生态系统铺平了道路。可以理解为Spring Boot就是一个基于Spring的套件,它帮我们预组装了Spring的一系列组件,以便以尽可能少的代码和配置来开发基于Spring的Java应用程序。


 

举个例子说明:

如果我们想组装一辆汽车,我们需要发动机、轮胎、底盘、外壳、座椅、内饰等各种部件,然后把它们装配起来。Spring就相当于提供了一系列这样的部件,但是要装好汽车上路,还需要我们自己动手。而Spring Boot则相当于已经帮我们预装好了一辆可以上路的汽车,如果有特殊的要求,例如把发动机从普通款换成涡轮增压款,可以通过修改配置或编写少量代码完成。

基于SpringBoot框架,我们可以集成其他的技术,比如Redis、RabbitMqRockerMQKafka、Zookeeper、Dubbo、quartz、logback、OSSOBS、jenkins、ELK 等,这些是需要额外的编写代码或者配置集成的。

三、SpringCloud框架

SpringCloud是基于SpringBoot来实现的微服务架构开发组件,Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。


 

springCloud关注于全局的微服务整合和管理,将多个springBoot单体微服务进行整合以及管理。

四、SpringBoot框架和SpringCloud框架比较

市场上使用Spring底层的基本是使用SpringBoot或者SpringCloud,它们均集成了spring,那么接下来我们就重点说明一下SpringBoot和SpringCloud的区别。

1、SpringBoot和SpringCloud的区别

SpringBoot只是一个快速开发框架,使用注解简化了xml配置,内置了Servlet容器,以Java应用程序进行执行。它提供了一个默认配置,从而简化配置过程;

SpringCloud是基于spring boot的一系列框架的集合,包括 eureka、ribbon、 feign、 zuul 、hystrix等。它为了给微服务提供一个综合管理框架。


 

2、既然SpringCloud那么强大,为什么还继续使用SpringBoot

使用场景不同。SpringBoot 用于关联性不强的单个微服务。当服务拆分多个微服务协作时为提高服务间的相互协作的可靠性高性能就要上SpringCloud。

项目规模会决定你使用什么样的框架,比如一个小型的后台管理系统,就比较适合使用SpringBoot,部署起来也比较简单,在不考虑高并发的情形下使用Springboot可以快速进行开发,后续也可以通过Nginx/haproxy负载等来提高性能,对硬件的需求也相对较小。如果使用SpringCloud,相对比较复杂,并且投入的硬件成本较高。

额外备注:微服务领域已经出了SpringCloud,为何还要学习SpringCloud Alibaba?

一个很重要的原因就是SpringCloud中一些组件闭源了,不再维护,如果在生产环境出现了问题,官方不再免费维护了。比如:注册中心Eureka在2.0版本之后宣布闭源了,容错组件Hystrix、网关组件Zuul也已经宣布停止维护了。SpringCloud Alibaba技术栈中的各个组件对比SpringCloud来讲,在性能上要更好一些。很多技术是阿里巴巴内部经过多年双11、双12大促的考验,经过不断总结和优化开源出来的产品。



Tags:Spring   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  Search: Spring  点击:(54)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  Search: Spring  点击:(39)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  Search: Spring  点击:(18)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  Search: Spring  点击:(88)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19  Search: Spring  点击:(86)  评论:(0)  加入收藏
Spring Boot2.0深度实践 核心原理拆解+源码分析
Spring Boot2.0深度实践:核心原理拆解与源码分析一、引言Spring Boot是一个基于Java的轻量级框架,它简化了Spring应用程序的创建过程,使得开发者能够快速搭建一个可运行的应用...【详细内容】
2024-01-15  Search: Spring  点击:(96)  评论:(0)  加入收藏
SpringBoot3+Vue3 开发高并发秒杀抢购系统
开发高并发秒杀抢购系统:使用SpringBoot3+Vue3的实践之旅随着互联网技术的发展,电商行业对秒杀抢购系统的需求越来越高。为了满足这种高并发、高流量的场景,我们决定使用Spring...【详细内容】
2024-01-14  Search: Spring  点击:(91)  评论:(0)  加入收藏
Spring Boot 3.0是什么?
Spring Boot 3.0是一款基于Java的开源框架,用于简化Spring应用程序的构建和开发过程。与之前的版本相比,Spring Boot 3.0在多个方面进行了改进和增强,使其更加易用、高效和灵活...【详细内容】
2024-01-11  Search: Spring  点击:(133)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11  Search: Spring  点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  Search: Spring  点击:(118)  评论:(0)  加入收藏
▌简易百科推荐
Qt与Flutter:在跨平台UI框架中哪个更受欢迎?
在跨平台UI框架领域,Qt和Flutter是两个备受瞩目的选择。它们各自具有独特的优势,也各自有着广泛的应用场景。本文将对Qt和Flutter进行详细的比较,以探讨在跨平台UI框架中哪个更...【详细内容】
2024-04-12  刘长伟    Tags:UI框架   点击:(1)  评论:(0)  加入收藏
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(8)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(17)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(54)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(47)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(39)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(51)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(68)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(88)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(86)  评论:(0)  加入收藏
站内最新
站内热门
站内头条