当前位置: 首页 > article >正文

44、Spring Boot 详细讲义(一)

Spring Boot 详细讲义

目录

  1. Spring Boot 简介
  2. Spring Boot 快速入门
  3. Spring Boot 核心功能
  4. Spring Boot 技术栈与集成
  5. Spring Boot 高级主题
  6. Spring Boot 项目实战
  7. Spring Boot 最佳实践
  8. 总结

一、Spring Boot 简介

1. Spring Boot 概念和核心特点

1.1、什么是 Spring Boot?

Spring Boot 是一个基于 Spring Framework 的延申项目,旨在通过简化配置和设置,帮助开发人员更快地构建、配置和部署基于 Spring 的应用程序。它通过自动配置和内嵌服务器的特性,大大减少了传统 Spring 应用的配置复杂度。

1.2、 Spring Boot 的主要特点

  • 简化配置
    Spring Boot 通过内嵌的配置文件(如 application.propertiesapplication.yml)和自动配置特性,减少了传统 Spring 项目中大量的 XML 或注解配置。
  • 自动配置
    Spring Boot 根据项目依赖自动配置 Bean 和环境。例如,添加了 spring-boot-starter-web 依赖后,Spring Boot 会自动配置嵌入式 Tomcat 服务器和 Web 应用的基础设施。
  • 内嵌服务器
    Spring Boot 内置了像 Tomcat、Jetty 和 Undertow 等常见的 Web 服务器,无需额外安装服务器即可运行 Web 应用。
  • 无需代码生成
    Spring Boot 不需要任何代码生成过程,开发者只需编写业务逻辑代码即可。
  • 生产环境友好
    Spring Boot 提供了强大的生产环境支持,包括监控、健康检查、外部化配置等功能,方便应用在生产环境中部署和管理。

2. Spring Boot 的优势

2.1、 与传统 Spring 的对比

特性传统 SpringSpring Boot
配置复杂度高,需要大量 XML 或注解配置低,简化配置,自动配置为主
启动速度较慢,需要手动配置服务器快速,内嵌服务器
依赖管理需要手动管理依赖版本通过 Starter 依赖自动管理
生产环境支持需要额外配置监控和日志内置监控和日志功能
开发效率较低,需要更多的配置和搭建工作更高,快速开发和部署

2.2、 适用场景

  • 快速开发
    适合快速搭建和验证想法的开发场景。
  • 微服务
    Spring Boot 是构建微服务的首选工具,结合 Spring Cloud 可以轻松实现微服务架构。
  • API 展现
    适合快速构建 RESTful API 服务。
  • 嵌入式应用
    适合需要内嵌 Web 服务器的桌面或移动应用。

3. Spring Boot 的版本和生态

3.1、Spring Boot 与 Spring Framework 的关系

Spring Boot 是 Spring Framework 的一个扩展,两者共享相同的核心功能,但 Spring Boot 提供了更简化的配置和更高效的开发体验。

  • Spring Framework:专注于核心框架功能,如 IOC、AOP 等。
  • Spring Boot:在 Spring Framework 基础上增加了自动配置、内嵌服务器等特性,简化了应用的开发和部署。

3.2 常见的组件和工具集

  • Spring Data
    提供对数据库的简化操作,支持 JPA、MongoDB、Redis 等。
  • Spring Security
    提供安全认证和授权功能,支持 OAuth2、JWT 等。
  • Spring Cloud
    提供微服务相关的组件,如服务注册、断路器、API 网关等。
  • Spring Actuator
    提供生产环境监控和管理功能。
  • Spring Initializr
    Spring Boot 项目模板生成工具,支持 Maven 和 Gradle 项目。

3.3、 Spring Boot 的版本说明

在这里插入图片描述

二、Spring Boot 快速入门

1、 Spring Boot 环境搭建

1.1 Java 8 或更高版本的安装与配置

  • 安装 Java
    Spring Boot 2.x 版本要求 Java 8 或更高版本。访问 Oracle Java 官方网站,下载并安装适合的版本。
  • 配置环境变量
    安装完成后,配置 JAVA_HOMEPATH 环境变量,确保系统可以识别 Java。
    • 验证安装:在命令行输入 java -version,查看 Java 版本。

1.2 Maven 的安装与配置

1.什么是maven

Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具.

通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)。

2.Maven安装

【检查】确认已经安装jdk,已经环境变量中配置JAVA_HOME,已经修改Path

【下载】从http://maven.apache.org/download.cgi下载所需要的版本。

【解压】解压maven到某一指定目录,例如:D:\apache-maven-3.5.2,目录下会有bin、conf、lib等文件夹。

3.配置环境变量

1.右键我的电脑(或者计算机)-属性-高级系统设置-高级-环境变量-系统变量-新建MAVEN_HOME,添加maven的安装目录
在这里插入图片描述

2.把%MAVEN_HOME%\bin;追加到Path变量的值后面
在这里插入图片描述

3.检验是否成功

cmd中输入 mvn -v,会显示版本信息

4 配置仓库

maven安装好以后,我们需要配置仓库用来加载项目需要的依赖包

maven存储jar包的仓库有3种 :本地仓库,远程仓库(私服),中央仓库, 检索顺序:先检索本地仓库--再检索远程仓库--最后检索中央仓库 .

我们需要配置本地仓库和私服。

1.配置本地仓库

maven安装目录/conf文件夹下找到settings.xml,修改本地仓库路径(之前有仓库的设置为之前仓库的路径,没有的会自动创建文件夹,以后从私服下载下来的jar包会保存到本地仓库中)
在这里插入图片描述

2.配置远程仓库

一般都使用国内镜像或者公司自己搭建私服, 目的是加快下载速度
在settings.xml文件中添加远程仓库的路径

<mirror>  <id>nexus-aliyun</id>  <mirrorOf>central</mirrorOf>    <name>Nexus aliyun</name>  <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>

在这里插入图片描述

1.3 IDE 安装与配置

  • Eclipse
    下载并安装 Eclipse。安装完成后,需要额外安装 Spring Tools 插件以支持 Spring Boot 开发。

  • IntelliJ IDEA
    推荐使用 IntelliJ IDEA,它对 Spring Boot 有更好的支持。

    • 下载社区版(免费)或ultimate版。
    • 安装完成后,确保 Maven 或 Gradle 插件已启用。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.4 Idea环境配置

1.idea中配置jdk

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点Add New SDK,然后选择jdk的安装目录即可添加JDK。

2.idea中配置maven

idea中打开“File”–>“settings”,搜索“maven”,如图,配置maven目录,settings文件目录,本地仓库目录

在这里插入图片描述

3.idea中设置编码和代码风格

file->settings中搜索File Encoding,可以设置编码

在这里插入图片描述

还可以设置代码风格

如图所示,可以选择不同的代码风格,默认是Dark(黑底白字),也可以选择其它风格,白底黑字等

在这里插入图片描述


2、 第一个 Spring Boot 应用

2.1 使用云脚手架创建第一个项目

通过云原生脚手架创建

云原生脚手架地址:https://start.aliyun.com

1、打开云原生脚手架,在线创建springboot项目。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将下载的项目解压后在idea中打开(注意解压后多两层bootdemo目录,打开里层的)

file->open->选择项目所在的位置

在这里插入图片描述

项目结构如下:

  1. src/main/java/:存放Java源代码文件
    • com.example.bootdemo:Java包名,根据实际情况可以自定义
      • BootdemoApplication.java:Spring Boot应用程序的入口类,包含main方法。
  2. src/main/resources/:存放资源文件(脚手架没有生成,后续我们可以自己手动创建)
    • static/:存放静态资源文件,如CSS、JavaScript等
    • templates/:存放模板文件,如Thymeleaf模板文件
    • application.propertiesapplication.yml:Spring Boot应用的配置文件,包括数据库连接、端口等配置信息
  3. src/test/java/:存放测试代码
  4. pom.xml:Maven项目的配置文件,管理项目的依赖和构建等信息

默认pom中添加了springboot,test包,我们可以在pom文件中添加项目需要的其它依赖包,比如mybatis,mysql驱动,springweb等(需要的时候再加)

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

2.2创建一个简单的 HelloWorld 控制器

在com.example.bootdemo包下创建HelloWorldController.java文件

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloWorldController {@GetMapping("/hello")public String hello() {return "Hello, Spring Boot!";}
} 

2.3 运行和测试

通过 Maven命令运行

项目打包

在这里插入图片描述

项目运行:

在这里插入图片描述

访问测试
在浏览器中输入 http://localhost:8080/hello,查看是否返回 “Hello, Spring Boot!”。

在这里插入图片描述

相关文章:

44、Spring Boot 详细讲义(一)

Spring Boot 详细讲义 目录 Spring Boot 简介Spring Boot 快速入门Spring Boot 核心功能Spring Boot 技术栈与集成Spring Boot 高级主题Spring Boot 项目实战Spring Boot 最佳实践总结 一、Spring Boot 简介 1. Spring Boot 概念和核心特点 1.1、什么是 Spring Boot&#…...

虽然理解git命令,但是我选择vscode插件!

文章目录 2025/3/11 补充一个项目一个窗口基本操作注意 tag合并冲突已有远程&#xff0c;新加远程仓库切换分支stash 只要了解 git 的小伙伴&#xff0c;应该都很熟悉这些指令&#xff1a; git init – 初始化git仓库git add – 把文件添加到仓库git commit – 把文件提交到仓库…...

【Pandas】pandas DataFrame head

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行 pandas.DataFrame.head pandas.DataFrame.head 是一个方法&#xff0c;用于返回 DataFrame 的前几行。这个方法非常有用&#xff0c;特别是在需要快速查看 DataFrame 的前…...

idea 打不开terminal

IDEA更新到2024.3后Terminal终端打不开的问题_idea terminal打不开-CSDN博客...

【JVM】JVM调优实战

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…...

FPGA_DDR(二)

在下板的时候遇到问题 1&#xff1a;在写一包数据后再读&#xff0c;再写再读 这时候读无法读出 查看时axi_arready没有拉高 原因 &#xff1a; 由于读地址后没有拉高rready,导致数据没有读出卡死现象。 解决结果...

Genspark vs manus

1. 产品定位与核心技术 Genspark Super Agent 定位:由前百度高管景鲲创立的MainFunc公司推出,主打“快速、准确、可控”的通用AI Agent,强调从思考到执行的全闭环能力,聚焦复杂任务自动化(如旅行规划、电话预订)。 核心技术: 混合代理架构(MoA):集成8个不同规模的LL…...

【吾爱出品】[Windows] 鼠标或键盘可自定义可同时多按键连点工具

[Windows] 鼠标或键盘连点工具 链接&#xff1a;https://pan.xunlei.com/s/VONSFKLNpyVDeYEmOCBY3WZJA1?pwduik5# [Windows] 鼠标或键盘可自定义可同时多按键连点工具 就是个连点工具&#xff0c;功能如图所示&#xff0c;本人系统win11其他系统未做测试&#xff0c;自己玩…...

vue3实战一、管理系统之实战立项

目录 管理系统之实战立项对应相关文章链接入口&#xff1a;实战效果登录页&#xff1a;动态菜单&#xff1a;动态按钮权限白天黑夜模式&#xff1a;全屏退出全屏退出登录&#xff1a;菜单收缩&#xff1a; 管理系统之实战立项 vue3实战一、管理系统之实战立项&#xff1a;这个项…...

【MySQL 删除数据详解】

文章目录 一、前言二、MySQL 中的三种删除方式1. DELETE 语句✅ 基本语法&#xff1a;&#x1f525; 示例&#xff1a;删除指定行&#xff1a;删除所有数据&#xff1a;删除多行&#xff1a; 2. TRUNCATE 语句✅ 基本语法&#xff1a;&#x1f525; 示例&#xff1a; 3. DROP 语…...

设计模式 Day 6:深入讲透观察者模式(真实场景 + 回调机制 + 高级理解)

观察者模式&#xff08;Observer Pattern&#xff09;是一种设计结构中最实用、最常见的行为模式之一。它的魅力不仅在于简洁的“一对多”事件推送能力&#xff0c;更在于它的解耦能力、模块协作设计、实时响应能力。 本篇作为 Day 6&#xff0c;将带你从理论、底层机制到真实…...

C#异步方法返回Task<T>的同步调用

在C#中我们已经非常习惯使用async/await来实现异步调用,但是某些时候并不允许异步调用,比如在一个Dynamics365的插件或操作中 为了确保事务性是不允许异步调用的,这个时候在使用httpclient发起请求时我们就可以使用Task<T>.Result来实现线程阻塞,进行同步方式的调用: va…...

OpenCV 图形API(18)用于执行两个矩阵(或数组)的逐元素减法操作函数sub()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 描述 计算两个矩阵之间的逐元素差值。 sub 函数计算两个矩阵之间的差值&#xff0c;要求这两个矩阵具有相同的尺寸和通道数&#xff1a; dst ( I ) src…...

汽车软件开发常用的需求管理工具汇总

目录 往期推荐 DOORS&#xff08;IBM &#xff09; 行业应用企业&#xff1a; 应用背景&#xff1a; 主要特点&#xff1a; Polarion ALM&#xff08;Siemens&#xff09; 行业应用企业&#xff1a; 应用背景&#xff1a; 主要特点&#xff1a; Codebeamer ALM&#x…...

AI 越狱技术剖析:原理、影响与防范

一、AI 越狱技术概述 AI 越狱是指通过特定技术手段&#xff0c;绕过人工智能模型&#xff08;尤其是大型语言模型&#xff09;的安全防护机制&#xff0c;使其生成通常被禁止的内容。这种行为类似于传统计算机系统中的“越狱”&#xff0c;旨在突破模型的限制&#xff0c;以实…...

推荐一款Nginx图形化管理工具: NginxWebUI

Nginx Web UI是一款专为Nginx设计的图形化管理工具&#xff0c;旨在简化Nginx的配置与管理过程&#xff0c;提高开发者和系统管理的工作效率。项目地址&#xff1a;https://github.com/cym1102/nginxWebUI 。 一、Nginx WebUI的主要特点 简化配置&#xff1a;通过图形化的界…...

区间 dp 系列 题解

1.洛谷 P4342 IOI1998 Polygon 我的博客 2.洛谷 P4290 HAOI2008 玩具取名 题意 某人有一套玩具&#xff0c;并想法给玩具命名。首先他选择 W, I, N, G 四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好&#xff0c;将名字中任意一个字母用 W, I, N, G …...

Spring Boot 自动加载流程详解

前言 Spring Boot 是一个基于约定优于配置理念的框架&#xff0c;它通过自动加载机制大大简化了开发者的配置工作。本文将深入探讨 Spring Boot 的自动加载流程&#xff0c;并结合源码和 Mermaid 图表进行详细解析。 一、Spring Boot 自动加载的核心机制 Spring Boot 的自动加…...

《从底层逻辑剖析:分布式软总线与传统计算机硬件总线的深度对话》

在科技飞速发展的当下&#xff0c;我们正见证着计算机技术领域的深刻变革。计算机总线作为信息传输的关键枢纽&#xff0c;其发展历程承载着技术演进的脉络。从传统计算机硬件总线到如今备受瞩目的分布式软总线&#xff0c;每一次的变革都为计算机系统性能与应用拓展带来了质的…...

Fay 数字人部署环境需求

D:\ai\Fay>python main.py pygame 2.6.1 (SDL 2.28.4, Python 3.11.9) Hello from the pygame community. https://www.pygame.org/contribute.html [2025-04-11 00:10:16.7][系统] 注册命令... [2025-04-11 00:10:16.8][系统] restart 重启服务 [2025-04-11 00:10:16.8][…...

python:all列表

1.all列表的说明&#xff1a; 当模块中有__all__变量时&#xff0c;当使用from xxx import *时&#xff0c;只能导入这个列表中的元素。 2.具体的例子&#xff1a; 1.先创建一个模块my_mod,在列表__all__中分别写入第一次只写入test1&#xff0c;第二次写入test1、test2两个…...

基于 SpringBoot 的校园论坛系统

收藏关注不迷路&#xff01;&#xff01; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多…...

2025 跨平台技术如何选:KMP 与 Flutter 的核心差异

前言 在移动开发的演进历程中&#xff0c;跨平台技术始终是一个充满争议却无法回避的话题。从早期的 React Native 到如今的 Kotlin Multiplatform&#xff08;KMP&#xff09;和 Flutter&#xff0c;开发者们始终在代码复用与原生体验之间寻找平衡。本文我们从技术实现、性能…...

深度学习总结(6)

随机梯度下降 给定一个可微函数&#xff0c;理论上可以用解析法找到它的最小值&#xff1a;函数的最小值就是导数为0的点&#xff0c;因此只需找到所有导数为0的点&#xff0c;然后比较函数在其中哪个点的取值最小。将这一方法应用于神经网络&#xff0c;就是用解析法求出损失…...

SpringBoot实战1

SpringBoot实战1 一、开发环境&#xff0c;环境搭建-----创建项目 通过传统的Maven工程进行创建SpringBoot项目 &#xff08;1&#xff09;导入SpringBoot项目开发所需要的依赖 一个父依赖&#xff1a;&#xff08;工件ID为&#xff1a;spring-boot-starter-parent&#xf…...

深度学习实战:从零构建图像分类API(Flask/FastAPI版)

引言&#xff1a;AI时代的图像分类需求 在智能时代&#xff0c;图像分类技术已渗透到医疗影像分析、自动驾驶、工业质检等各个领域。作为开发者&#xff0c;掌握如何将深度学习模型封装为API服务&#xff0c;是实现技术落地的关键一步。本文将手把手教你使用Python生态中的Fla…...

【Linux】39.一个基础的HTTP Web服务器

文章目录 1. 实现一个基础的HTTP Web服务器1.1 功能实现&#xff1a;1.2 Log.hpp-日志记录器1.3 HttpServer.hpp-网页服务器1.4 Socket.hpp-网络通信器1.5 HttpServer.cc-服务器启动器 1. 实现一个基础的HTTP Web服务器 1.1 功能实现&#xff1a; 总体功能&#xff1a; 提供We…...

阿里云域名证书自动更新acme.sh

因为阿里云的免费证书只有三个月的有效期&#xff0c;每次更换都比较繁琐&#xff0c;所以找到了 acme.sh&#xff0c;还有一种 certbot 我没有去了解&#xff0c;就直接使用了 acme.sh 来更新证书&#xff0c;acme.sh 的主要特点就是&#xff1a; 支持多种 DNS 服务商自动化续…...

大数据Hadoop(MapReduce)

MapReduce概述 MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上…...

图灵逆向——题十七-字体加密

十七题是一个很经典的字体加密案例&#xff0c;很适合新手入门~ 目录列表 过程分析代码实现 过程分析 打开开发者工具直接看请求&#xff0c;发现它请求的没有加密参数&#xff0c;以为万事大吉的你迫不及待的点击了响应&#xff0c;然后就会发现依托。。。 返回的数据中字体…...