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

news2024/11/22 23:16:32

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


今天给大家带来的是 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.coloradmin.cn/o/792668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据接口有哪些?(数据接口有哪几种)

数据接口是指不同应用程序或系统之间交换数据的通信界面。在现代信息化社会中,数据接口扮演着极为重要的角色,它们使得不同平台之间能够相互连接和交流,从而实现数据共享和应用集成。 数据接口的种类繁多,常见的有以下几种&#…

OpenCvSharp (C# OpenCV) 二维码畸变矫正--基于透视变换(附源码)

导读 本文主要介绍如何使用OpenCvSharp中的透视变换来实现二维码的畸变矫正。 实现步骤 讲解实现步骤之前先看下效果(左边是原图,右边是矫正后的效果): 【1】需求分析 由于相机拍摄角度,导致二维码形状不是矩形,存在明显的畸变。我们希望将其矫正为正常的矩形或者正方形图…

mars3d绘制区域范围(面+边框)

1、图例(绿色面区域白色边框) 2、代码 1)、绘制区域ts文件 import { mapLayerCollection } from /hooks/cesium-map-init /*** 安全防護目標* param map*/ export const addSafetyProtection async (map) > {const coverDatas await m…

游戏服务器的帧率控制

固定Tick时间策略 固定Tick时间&#xff1a;顾名思义就是指程序每次心跳的时间都是等长的、固定的。如图中的“图A”&#xff0c;Tick1和Tick2的时间是相等的&#xff0c;如果实际执行的比上次执行时间长&#xff08;Run2 > Run1&#xff09;&#xff0c;则Sleep2 < Slee…

EventLog Analyzer:保障网络安全的强大日志审计利器

日志审计是现代网络安全中不可或缺的一环。随着信息技术的迅速发展&#xff0c;企业和组织面临着越来越多的网络安全威胁&#xff0c;如数据泄露、网络攻击和内部滥用等。而为了确保网络安全&#xff0c;日志审计成为了必要的措施。在众多日志审计工具中&#xff0c;EventLog A…

neo4j教程-安装部署

neo4j教程-安装部署 Neo4j的关键概念和特点 •Neo4j是一个开源的NoSQL图形存储数据库&#xff0c;可为应用程序提供支持ACID的后端。Neo4j的开发始于2003年&#xff0c;自2007年转变为开源图形数据库模型。程序员使用的是路由器和关系的灵活网络结构&#xff0c;而不是静态表…

个人博客系统[SpringBoot+SpringMVC+MyBais]

文章目录 &#x1f387; 前言1.项目目录介绍2.项目前准备2.1 使用到的第三方库2.1 配置文件&#xff08;application.properties&#xff09;2.2 数据库介绍 3.common目录工具类介绍3.1 AjaxResult类3.2 AppVariable类3.3 CaptchaUtils类3.4 PasswordUtils类3.5 UserSessionUti…

VSCode打开终端的方法

VScode打开终端的方法 第一种&#xff1a;快捷键 Ctrl ~ 第二种&#xff1a;选中某个文件&#xff0c;右键&#xff0c;点击“在集成终端中打开” 第三种&#xff1a;在VSCode的页面上方的选项&#xff0c;点击“终端”&#xff0c;再点击“新建终端” 打开后&#xff0c;…

事务,不只ACID

大家好&#xff0c;我是 方圆。一提到事务&#xff0c;最先让我想到的就是ACID和倒背如流的隔离级别。它确实和这些相关&#xff0c;但是在我读了《数据密集型应用系统设计》之后&#xff0c;我想把事务这个主题讲的不那么“传统”。本文的部分内容可能读起来会有些老生常谈的感…

【Vue】在el-table的el-table-column中,如何控制单行、单列、以及根据内容单独设置样式。例如:修改文字颜色、背景颜色

用cell-style表属性来实现。在官网中是这样表述这个属性的。 在el-table中用v-bind绑定此属性。&#xff08;v-bind的简写是&#xff1a;&#xff09; <el-table:data"options":cell-style"cell"><el-table-column prop"id" label"…

医疗小程序:提升服务质量与效率的智能平台

在医疗行业&#xff0c;公司小程序成为提高服务质量、优化管理流程的重要工具。通过医疗小程序&#xff0c;可以方便医疗机构进行信息传播、企业展示等作用&#xff0c;医疗机构也可以医疗小程序提供更便捷的预约服务&#xff0c;优化患者体验。 医疗小程序的好处 提升服务质量…

四章:Constrained-CNN losses for weakly supervised segmentation——弱监督分割的约束CNN损失函数

0.摘要 基于部分标记图像或图像标签的弱监督学习目前在CNN分割中引起了极大关注&#xff0c;因为它可以减轻对完整和繁琐的像素/体素注释的需求。通过对网络输出施加高阶&#xff08;全局&#xff09;不等式约束&#xff08;例如&#xff0c;约束目标区域的大小&#xff09;&am…

具身智能controller---RT-1(Robotics Transformer)(中---实验介绍)

6 实验 实验目的是验证以下几个问题: RT-1可以学习大规模指令数据&#xff0c;并且可以在新任务、对象和环境上实现zero-shot的泛化能力&#xff1f;训练好的模型可以进一步混合多种其他数据&#xff08;比如仿真数据和来自其他机器人的数据&#xff09;吗&#xff1f;多种方…

玄子Share - Redis 双系统安装教程 Linux Windows(附安装包)

玄子Share - Redis 双系统安装教程 Linux Windows&#xff08;附安装包&#xff09; Linux 安装 Redis 前置条件 Linux 本地体验需安装 Linux 虚拟机 Linux 安装 Redis 需学到第 15 节 【小白入门 通俗易懂】2021韩顺平 一周学会Linux https://www.bilibili.com/video/BV1Sv…

基于POX交叉的遗传算法求解车间调度

对于流水车间调度问题&#xff0c;n个工件在m台设备上加工&#xff0c;已知每个工件每个工序使用的机器和每个工件每个工序所用时间&#xff0c;通过决策每个机器上工件的加工顺序和每个工序的开始时间&#xff0c;使完成所有工序所用时间(makespan)最小。具有下列约束&#xf…

【计算机网络】应用层协议 -- HTTP协议

文章目录 1. 认识HTTP协议2. 认识URL3. HTTP协议格式3.1 HTTP请求协议格式3.2 HTTP响应协议格式 4. HTTP的方法5. HTTP的状态码6. HTTP的Header7. Cookie和Session 1. 认识HTTP协议 协议。网络协议的简称&#xff0c;网络协议是通信计算机双方必须共同遵守的一组约定&#xff0…

直线导轨的主要功能

直线导轨是一种常见的机械结构&#xff0c;用于工业机器人、数控机床和其他自动化装置中。它的作用是提供一个准确的直线运动轨道&#xff0c;使得设备能够在预定的路径上进行精确的移动。 直线导轨作为一种重要的机械基础件&#xff0c;在现代工业中得到了广泛的应用。它主要的…

双非二本想进嵌入式行业?

二本的话学历上会吃点亏&#xff0c;但也没有特别夸张。嵌入式毕竟是技术岗&#xff0c;主要还是看自己的技术能力。嵌入式的话&#xff0c;在北上广深&#xff0c;稍微好点的企业研究生学历都能开到20K以上&#xff0c;本科生会低个2K左右&#xff0c;像大疆、华为更高&#x…

Too many files with unapproved license: 2 See RAT report

解决方案 mvn -Prelease-nacos -Dmaven.test.skiptrue -Dpmd.skiptrue -Dcheckstyle.skiptrue -Drat.numUnapprovedLicenses100 clean install 或者 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.numUnapprovedLicenses100 clean install

CPLD在线升级

文章目录 前言一、JTAG芯片介绍二、JTAG协议分析1.TAP状态机 前言 CPLD&#xff08;Complex Programmable Logic Device&#xff09;是一种可编程逻辑器件&#xff0c;可以用于实现数字逻辑电路的功能。CPLD通常包含可编程逻辑单元&#xff08;如逻辑门阵列&#xff09;和可编…