【SpringBoot】简介及传统的 Spring 框架:对比和分析

news/2024/10/23 21:29:00/

 哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ  


今天给大家带来的是 SpringBoot 的简介,SpringBoot 项目的创建,相较于 Spring 框架的优点: 1. 快速的集成框架  2.内置运行容器, 快速的部署项目 3. 摒弃繁琐的 xml,使用注解和配置的方式进行开发。4. 支持更多的监控的指标,本文将为大家讲解,一起来看看叭~


本期收录于博主的专栏:JavaEE_保护小周ღ的博客-CSDN博客

适用于编程初学者,感兴趣的朋友们可以订阅,查看其它 “JavaEE基础知识”。

更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘

一、SpringBoot 简介

SpringBoot 的由来可以追溯到 Spring 框架。Spring 是一个非常流行的开源 Java 框架,用于构建企业级应用程序。然而,使用 Spring 框架开发传统的 Java 应用程序需要进行繁琐的配置,并且部署也需要额外的手动操作。

为了简化 Spring 应用程序的开发和部署过程,SpringBoot 在2013年由 Pivotal 团队推出(与Spring 并不是同一团队)。它的目标是通过提供一系列的自动配置、快速启动、内嵌服务器和起步依赖项等功能,使得开发者可以更轻松地创建和部署 Spring 应用程序。

SpringBoot 的设计理念是 “约定大于配置” 的方式来提高开发效率。它采用了一套预定义的规则和约定,根据项目的依赖和类路径进行自动配置,大部分情况下无需手动配置。开发者只需要关注业务逻辑的实现而不必浪费时间在繁琐的配置上。

Spring 的诞生是为了简化 Java 应用程序的开发,而 SpringBoot 的诞生是为了简化 Spring 程序的开发,SpringBoot 是为了快速的开发 Spring 框架而诞生的。

例如:Spring 割稻谷

SpringBoot 割稻谷

也是很鲜明的对比,技术的更新迭代嘛,新的技术相较于之前的技术在效率方面肯定有一些提升。


二、SpringBoot 的优点

优点建立在Spring 框架的基础之上~

2.1 快速的集成框架:

我们想要创建 Spring 项目,最常用的一个做法是先创建一个Maven 项目,然后从 Maven 中央仓库中获取 Spring 的依赖(Spring 属于第三方开源框架),注入到 pom.xml 配置文件中。

将一些都做好了之后,我们可能还需添加一些其他第三方依赖,例如:JDBC (数据库),一些工具依赖 lombok 等等,不知道细心的朋友发现了没,我们添加的各种依赖都有一个版本号,如果这些第三方依赖彼此之间版本不兼容,如果我们使用了这些依赖,可能会导致程序无法启动,或者是一些功能的瘫痪。

所以创建Spring 项目,我们需要添加相关依赖,需要注意依赖的版本之间是否兼容!!!


 2.1.1 SpringBoot 的创建

如果我们使用的 IDEA 的社区版,要先安装Spring Boot Helper 插件(这个插件在社区版 2022 之前才免费,之后的版本需要收费的)才能创建  SpringBoot 项目。

 安装好之后,它的名字就变成了 Spring Initializr and Assistant:

 

 然后我们使用 IDEA 创建项目的时候就可以使用该插件创建~

注意选择你本机上安装的 JDK 的版本

点击next 后:

 点击 Finish 就完成 Spring Boot 的项目创建了.


我们也可以不使用 IDEA 创建SpringBoot 项目,使用 Spring官网提供的网页版本来创建 SpringBoot项目,或者 阿里提供的网页版创建项目

网页版创建路径:https://start.spring.io
网页版创建好项目后,会得到一个 SpringBoot 的zip 压缩包,解压后使用 Idea 打开后也可以直接使用项目,注意网页创建项目的时候需要选择的JDK适配 与本机的JDK 版本适配。


我们使用 IDEA 创建一个 SpringBoot 项目感觉过程非常的繁琐,但这些流程全部都是必要的,没有一丝的拖泥带水,最最最关键的是SpringBoot 可以帮我们根据 SpringBoot 的版本去适配其他的第三方框架(依赖)的版本这是他的优点,可以快速的集成框架。


2.2 内置运行容器, 快速的部署项目

SpringBoot内置了多种容器,可以根据需要选择合适的容器。以下是Spring Boot内置的容器:

  1. Tomcat(默认):Spring Boot默认使用的容器是Apache Tomcat。Tomcat是一个轻量级的Java Web(HTTP)服务器,以及一个Servlet容器。Spring Boot会自动配置Tomcat作为默认的内置容器。

  2. Jetty:Spring Boot也支持使用Jetty作为内置容器。Jetty是另一个流行的Java Web服务器和Servlet容器。可以通过在pom.xml文件中添加jetty依赖来切换至Jetty容器。

  3. Undertow:另一个可选的内置容器是Undertow。Undertow是一个轻量级的高性能Web服务器,由JBoss开发。可以通过在pom.xml文件中添加undertow依赖来切换至Undertow容器。

可以通过在Spring Boot的配置文件(application.properties或application.yml)中设置相关属性来配置使用的内置容器。例如,可以设置server.port属性来指定监听的端口号。

需要注意的是,SpringBoot也支持通过外部容器部署应用程序,例如使用独立的Tomcat或Jetty服务器来承载应用程序。这样做可以提供更灵活的部署和扩展选项。

Java在运行部署这一块Tomcat 使用的是最多的,他是用Java代码写的 HTTP 协议的服务器,JavaWeb 这一块是靠这些内置容器提供 API 对HTTP 协议数据报进行处理。

像Servlet 项目就需要我们手动去配置一个外置的 Tomcat 然后将项目打包部署到容器中。在项目部署的时候我们同样也需要安装一个 Tomcat 到服务器上,而 SpringBoot 项目内部集成了 Tomcat ,所以我们就可以做到快速的部署项目,无需外部容器即可启动。


2.3 摒弃繁琐的 xml,使用注解和配置的方式进行开发。

Spring 在启动时需要根据 Spring配置文件(.xml)中配置的包路径扫描包中的那些类被注解注释了,然后将这些被注释的类实例(Bean对象)到 Spring 容器中。

而SpringBoot 项目,当我们把要注⼊到容器类和启动类放到同级目录下时:

这个时候当项目启动时才能扫描注解修饰的类,将Bean 对象注入到容器中。

对比 Spring 项目我们就可以直观的看到区别,Spring 中需要配置 Bean 对象的包扫描路径,而SpringBoot 不用(约定大于配置)。我们在做大项目的时候,目录是有很多的,如果都是用 xml 文件配置路径,是非常繁琐的操作。

SpringBoot 还有一个优点就是有配置文件,自动装配,这个跟Spring 自动装配不是一个概念,Boot 项目启动时,可以从配置文件中读取类实例所需的第三方数据!!

举个例子,创建Mysql 数据库对象—— datasource

常规的做法是我们手动配置数据源:

这意味着写死了,因为我们将项目打包部署,生成的是字节码文件(.class 二进制),如果我们实际的运行环境跟我们项目中的数据不适配,本地调试的数据库跟服务器上的数据库那是两个不同的用户名,密码,不一定一样(本地能跑,服务器上跑不了,需要调试,或者因为服务器上的某些数据要被修改(账户,密码),但是对于我们的字节码文件来说,修改不了,程序自然就无法运行,还得返工,让开发人员重新调整然后打包部署,这个操作就非常的麻烦。

而SpringBoot 项目创建一个Mysql数据源就先从配置文件中读取相关信息,然后帮我们生成一个 Mysql 的数据源,这意味着,文件是可以随时修改得,类在实例时,所依赖的关键数据可以变化的。

包括端口号,本地默认是 8080,成产环境的服务器 8080 端口可能被占用了,这种情况下我们也可在配置文件中修改应用程序的端口号,这些都是 SpringBoot 项目的优点。

当然普通的项目中,我们也可以创建一个配置文件,利用 IO 流来读取相关信息,说白了,增加了类的复杂度,程序猿的代码需要框框写,奈何 SpringBoot 是自带的呢,而且配合注解使用就可以读取啦。SpringBoot 配置文件是非常强大的嘞,详细内容请听下回揭晓~


2.4  支持更多的监控的指标

SpringBoot提供了一些内置的监控指标,可以通过集成的监控工具或者自定义指标来获取更多信息。下面是一些SpringBoot支持的监控指标的示例:

  1. 健康指标(Health Indicators):用于检查应用程序的健康状况,包括内存使用、数据库连接状态等。

  2. 内存指标(Memory Metrics):跟踪应用程序的内存使用情况,包括堆内存使用量、非堆内存使用量等。

  3. CPU指标(CPU Metrics):监控应用程序在处理请求时的处理器使用率。

  4. 线程指标(Thread Metrics):跟踪应用程序的线程池使用情况,以及活动线程的数量等。

  5. 请求统计指标(Request Metrics):监控应用程序的请求处理情况,如请求的数量、平均响应时间等。

  6. 数据库指标(Database Metrics):用于跟踪应用程序与数据库之间的交互情况,如查询执行时间、连接池使用情况等。

  7. 日志指标(Log Metrics):跟踪应用程序的日志输出情况,如日志级别、日志条目数量等。

  8. 缓存指标(Cache Metrics):监控应用程序的缓存使用情况,如缓存命中率、缓存清除次数等。

这些指标可以方便地通过Spring Actuator模块来进行监控和暴露,也可以选择使用自带的监控工具或者结合第三方监控工具进行监控和分析。

以上我们最常用的是日志,项目在运行的过程中遇到的那些问题,通常在日志中就可以体现出来,日志的内容和级别是撒时候记录可以由程序员自己决定。

 关于日志的相关操作我也会在后期的文章当中给大家讲述……


好了,到这里,【SpringBoot】简介及传统的 Spring 框架:对比和分析 博主已经分享完了,希望对大家有所帮助,如有不妥之处欢迎批评指正。 

下期预告:【SpringBoot】日志、【SpringBoot】配置文件

感谢每一位观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* 

遇见你,所有的星星都落在我的头上……


http://www.ppmy.cn/news/990006.html

相关文章

XMLHttpRequest (XHR) 与 fetch

XMLHttpRequest (XHR) 原理 XMLHttpRequest (XHR) 是一种在客户端和服务器之间进行异步数据交换的技术,它允许浏览器向服务器发送HTTP请求,获取数据并更新部分网页内容,而无需刷新整个页面。XHR 是现代Web开发中常用的一种技术,…

【优选算法题练习】day10

文章目录 一、137. 只出现一次的数字 II1.题目简介2.解题思路3.代码4.运行结果 二、剑指 Offer 53 - II. 0~n-1中缺失的数字1.题目简介2.解题思路3.代码4.运行结果 三、153. 寻找旋转排序数组中的最小值1.题目简介2.解题思路3.代码4.运行结果 总结 一、137. 只出现一…

使用pikachu管理工具下的XSS后台进行实战

写在前面的重要提示: Attention:技术没有好坏之分,关键在于使用技术的人或组织。网络安全技术是一把双刃剑 – 作为网络安全人,虽然无法控制头上的帽子是否会变绿,但能控制不让它变黑;无论我们在物质上面对…

NLP From Scratch: 基于注意力机制的 seq2seq 神经网络翻译

NLP From Scratch: 基于注意力机制的 seq2seq 神经网络翻译 这是关于“从头开始进行 NLP”的第三篇也是最后一篇教程,我们在其中编写自己的类和函数来预处理数据以完成 NLP 建模任务。 我们希望在完成本教程后,您将继续学习紧接着本教程的三本教程&…

52:函数的扩展

函数的扩展 函数参数的默认值[rest 参数](https://es6.ruanyifeng.com/#docs/function#rest 参数)严格模式[name 属性](https://es6.ruanyifeng.com/#docs/function#name 属性)箭头函数尾调用优化函数参数的尾逗号Function.prototype.toString()[catch 命令的参数省略](https:…

基于VC环境下调用MATLAB实现数字图像处理(附上完整源码+图像+说明)

在VC环境下调用MATLAB实现数字图像处理是一种常见且有效的方法。下面将介绍如何在VC环境下调用MATLAB实现数字图像处理的步骤。 文章目录 1. 准备工作2. 创建一个VC项目3. 导入MATLAB库文件4. 编写代码5. 编译和运行6. 完整源码数据说明下载 1. 准备工作 首先,确保…

go常用知识点

go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 打包一个目录下的多个包时 go build ./… go install ./… 测试时,命令行:go test . //目录下所有单元测试都会执行 go test -v 目录 //测试覆盖率 go test -cover //使用cove…

Android10 Settings系列(三)根据需求动态添加删除一级菜单、二级菜单的设置项

一 、背景 当时遇到定制需求,需要根据实际需要隐藏Settings的菜单项,于是开始了寻找方法 二 、准备工作 在看了一下源码,经过尝试后,确认生效后,就简单说明一下Settings中布局中主要组成元素 Settings中的菜单项是由 PreferenceScreen 和Preference组成的。其中Prefer…