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!”。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75346.shtml

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

相关文章

配置mac mini M4 的一些软件

最近更换了 mac mini M4 &#xff0c;想要重新下载配置软件 &#xff0c;记录一下。 Homebrew是什么&#xff1f; homebrew是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等功能。通过简单的指令可以实现包管理&#xff0c;而不用关心各种…

网络空间安全(54)CSRF

一、定义与原理 CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;全称为跨站请求伪造&#xff0c;也被称为One Click Attack或Session Riding&#xff0c;缩写为CSRF或XSRF。它是一种网络安全漏洞&#xff0c;攻击者通过伪造用户的请求&#xff0c;利用用户…

分布式文件存储系统FastDFS

文章目录 1 分布式文件存储1_分布式文件存储的由来2_常见的分布式存储框架 2 FastDFS介绍3 FastDFS安装1_拉取镜像文件2_构建Tracker服务3_构建Storage服务4_测试图片上传 4 客户端操作1_Fastdfs-java-client2_文件上传3_文件下载4_获取文件信息5_问题 5 SpringBoot整合 1 分布…

安装了VM Tools,仍无法复制拖动-解决方案

今天在安装ubuntu时遇到了困扰许久的问题&#xff0c;安装了VM Tools&#xff0c;仍无法拖动主机文件到虚拟机&#xff0c;主要有两种原因并对应解决办法。 1.相关虚拟机设置选项卡中-客户机隔离-两个功能没有勾选 解决方案&#xff1a;勾选重启虚拟机即可 2.&#xff08;这个…

Jmeter分布式测试启动

代理客户端配置 打开jmeter.properties文件&#xff0c;取消注释并设置端口&#xff08;如server_port1099&#xff09;&#xff0c; 并添加server.rmi.ssl.disabletrue禁用SSL加密。 &#xff08;Linux系统&#xff09;修改jmeter-server文件中的RMI_HOST_DEF为代理机实际IP。…

火语言RPA--Oracle-导入数据表格

【组件功能】&#xff1a;导入特定的表格数据到包含同样字段的数据表 将表格对象数据通过数据库操作对象导入到指定数据库。 配置预览 配置说明 源表格 表格来源有“来自表格对象”和“来自表达式”2种&#xff0c;表达式支持DataTable类型变量。 对象 对应来自表格对象&…

Java的Selenium的特殊元素操作与定位之验证码

1.使用OCR技术识别验证 步骤&#xff1a; 截取整个网页的截图。 定位验证码图片元素。 根据验证码图片的位置和大小&#xff0c;从截图中裁剪出验证码图片。 使用OCR工具&#xff08;如Tesseract&#xff09;识别验证码图片中的文本。 2.手动处理验证码 步骤&#xff1a;…

OpenStack Yoga版安装笔记(十七)安全组笔记

一、安全组与iptables的关系 OpenStack的安全组&#xff08;Security Group&#xff09;默认是通过Linux的iptables实现的。以下是其主要实现原理和机制&#xff1a; 安全组与iptables的关系 OpenStack的安全组规则通过iptables的规则链实现。每条安全组规则会被转换为相应的i…

starrocks split函数和trino split函数差异性

在trino419和starrocks3.2.8中分别执行下面这两条sql,出来的结果是不一样的 select split(,,,)[1] as t1 select coalesce(split(,,&#

Spring Data JPA中的List底层:深入解析ArrayList的奥秘!!!

&#x1f31f; Spring Data JPA中的List底层&#xff1a;深入解析ArrayList的奥秘 &#x1f4a1; 你是否好奇过&#xff0c;为什么Spring Data JPA的查询方法返回的List<T>总是默认为ArrayList&#xff1f;本文将通过技术原理解析、验证实验和性能优化指南&#xff0c;为…

腾讯云智测试开发面经

1、投递时间线 2.20投递简历,3.11第一轮面试,3.30第二轮面试,4.4第三轮面试,4.10第四轮面试,4.11offer意向书 2、第一轮面试 第一轮面试技术面,面试官是导师,面试时长40多分钟 1)自我介绍 2)数组和列表的区别 3)了解哪些数据库 4)进程和线程的区别 5)了解哪…

【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3源码整体结构解析

【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3源码整体结构解析 文章目录 【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3源码整体结构解析前言代码结构整体data文件结构模型训练超参数配置文件解析数据集配置文件解析 models文件结构utils文件结构runs文…

Python常用排序算法

1. 冒泡排序 冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的列表&#xff0c;比较相邻的元素&#xff0c;如果他们的顺序错误就交换他们。 def bubble_sort(arr):# 遍历所有数组元素for i in range(len(arr)):# 最后i个元素是已经排序好的for j in range(0, …

解锁塔能科技,开启工厂绿色转型与可持续发展双引擎

在全球积极推进可持续发展的大背景下&#xff0c;能源的高效利用与节能减排&#xff0c;已成为各行各业迈向高质量发展进程中无法回避的核心任务。工厂作为能源消耗大户与污染排放重点源头&#xff0c;其绿色转型迫在眉睫&#xff0c;这不仅关乎企业自身的长远发展&#xff0c;…

Spring Boot 线程池配置详解

Spring Boot 线程池配置详解 一、核心配置参数及作用 基础参数核心线程数 (corePoolSize)‌ 作用‌:线程池中始终保持存活的线程数量,即使空闲也不回收‌。 建议‌:根据任务类型设定(如 I/O 密集型任务可设为 CPU 核心数 2)‌。 最大线程数 (maxPoolSize)‌ 作用‌:…

入侵检测系统(IDS)和入侵防御系统(IPS)有啥区别?

入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09;是网络安全中的两种关键技术&#xff0c;它们的核心区别在于 检测后的响应方式 和 部署位置。以下是详细对比&#xff1a; 1. 核心功能 - IDS&#xff08;入侵检测系统&#xff09; - 仅监…

【MySQL 数据库】数据表的操作

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 表的查看 1.1 语法 2. 表的创建 2.1 语法 2.2 练习 3. 查看表结构 3.1 语法 3.2 示例 4. 表的修改 4.1 语法 4.2 示例操作 4.2.1 向表中添加字段…

sqli-labs靶场 less5

文章目录 sqli-labs靶场less 5 报错注入 sqli-labs靶场 每道题都从以下模板讲解&#xff0c;并且每个步骤都有图片&#xff0c;清晰明了&#xff0c;便于复盘。 sql注入的基本步骤 注入点注入类型 字符型&#xff1a;判断闭合方式 &#xff08;‘、"、’、“”&#xf…

C# 状态模式深度解析:构建灵活的状态驱动系统

一、状态模式概述 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在其内部状态改变时改变其行为&#xff0c;使对象看起来像是修改了它的类。这种模式将特定状态相关的行为局部化&#xff0c;并且将不同状态的行为分割开来。 状态…

vue实现二维码生成器和解码器

vue实现二维码生成器和解码器 1.生成基本二维码&#xff1a;根据输入的value生成二维码。 2.可定制尺寸&#xff1a;通过size调整大小。 3.颜色和背景色&#xff1a;设置二维码颜色和背景。 4.静区&#xff08;quiet zone&#xff09;支持&#xff1a;通过quietZone调整周围的…