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

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


今天给大家带来的是 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】配置文件

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

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

相关推荐
utmhikari1 小时前
【架构艺术】Go语言微服务monorepo的代码架构设计
后端·微服务·架构·golang·monorepo
蜡笔小新星1 小时前
Flask项目框架
开发语言·前端·经验分享·后端·python·学习·flask
计算机学姐1 小时前
基于Asp.net的驾校管理系统
vue.js·后端·mysql·sqlserver·c#·asp.net·.netcore
欢乐少年19043 小时前
SpringBoot集成Sentry日志收集-3 (Spring Boot集成)
spring boot·后端·sentry
夏天的味道٥4 小时前
使用 Java 执行 SQL 语句和存储过程
java·开发语言·sql
冰糖码奇朵5 小时前
大数据表高效导入导出解决方案,mysql数据库LOAD DATA命令和INTO OUTFILE命令详解
java·数据库·sql·mysql
好教员好5 小时前
【Spring】整合【SpringMVC】
java·spring
浪九天6 小时前
Java直通车系列13【Spring MVC】(Spring MVC常用注解)
java·后端·spring
堕落年代7 小时前
Maven匹配机制和仓库库设置
java·maven
功德+n7 小时前
Maven 使用指南:基础 + 进阶 + 高级用法
java·开发语言·maven