【JavaEE】SpringBoot快速上手,探秘 Spring Boot,搭建 Java 项目的智慧脚手架
1.Spring Boot介绍
在学习SpringBoot之前, 我们先来认识⼀下Spring ,我们看下Spring官⽅的介绍

可以看到,Spring让Java程序更加快速, 简单和安全。 Spring对于速度、简单性和⽣产⼒的关注使其成为世界上最流⾏的Java框架。
Spring官⽅提供了很多开源的项⽬, 覆盖范围从Web开发到⼤数据, Spring发展到了今天, 已经形成了⾃⼰的⽣态圈. 我们在开发时, 也倾向于使⽤Spring官⽅提供的技术, 来解决对应的问题。

这些项⽬都是基于Spring Framework来进⾏开发的, 但是Spring Framework存在配置多, ⼊⻔难的问题, Spring 也意识到了这个问题, 为了简化开发者的使⽤, 从⽽创造性的推出了SpringBoot。
接下来我们看下什么是Spring Boot。
Spring Boot 的诞⽣是为了简化 Spring 程序开发的。
Spring Boot 翻译⼀下就是 Spring 脚⼿架,什么是脚⼿架呢?如下图所⽰

盖房⼦的这个架⼦就是脚⼿架,脚⼿架的作⽤是砌筑砖墙,浇筑混凝⼟、⽅便墙⾯抹灰,装饰和粉刷的,简单来说,就是使⽤脚⼿架可以更快速的盖房⼦。
⽽ Spring Boot 就是 Spring 框架的脚⼿架,它是为了快速开发 Spring 框架⽽诞⽣的.
每次技术的诞⽣和改进相⽐于之前的效率会有⼀个质的提升,⽽ Spring Boot 相⽐于 Spring 也是如此.
2.SpringBoot项目创建
2.1使⽤ Idea 创建
因为⽤的 Idea 社区版(其他版本也同样适⽤),所以先要安装 Spring Boot Helper插件才能创建 Spring Boot 项⽬.
社区版要求:2021.1 -2022.1.4
安装Spring Boot Help插件
使⽤专业版Idea的同学不需要安装插件, Idea已经集成了
-
查找插件并下载

点击 , 进⼊⽹⻚下载插件此处不要直接点击 Install 直接点击Install, 安装的是收费版(⼟豪请随意)
插件地址: 点击跳转

插件对Idea版本有要求, Idea版本需要在2021.1 -2022.1.4范围内, 不在这个范围内需要重新卸载安装, 卸载要删除注册表的内容
-
安装插件
按下图序号操作, 逐步安装插件

选择刚才下载的插件, 安装, 重启Idea即可 此时查看已安装插件
安装好之后,它的名字就变成了 Spring Initializr and Assistant,如下图所⽰∶

不要点击 update!!!
创建SpringBoot项⽬
接下来我们来创建 Spring Boot 项⽬:
File -> New ->Project



上图说明
① SpringBoot版本 , 选择任意3.X的, 这个版本会随着SpringBoot的升级⽽发⽣变化, 不固定
3.X版本使⽤的是jdk17, 3.X以下使⽤的是JDK8
② 打勾表⽰创建项⽬之初, 就引⼊的第三⽅依赖(框架, 插件, 组件等 后⾯再细讲)

点击 Create 就完成 Spring Boot 的项⽬创建了。
注意事项
第⼀次打开 Spring Boot 项⽬需要加载很久,因为当前 Spring Boot 框架并没有在⾃⼰的本地仓库. 为了加速 Spring Boot 项⽬的下载,在打开项⽬之前,请先确认⾃⼰的 Maven 已经配置为国内源
2.2⽹⻚版创建(了解)
不使⽤ Idea 也可以创建 Spring Boot 项⽬,我们可以使⽤ Spring 官⽅提供的⽹⻚版来创建 Spring Boot 项⽬。
⽹⻚版创建项⽬先访问,如下图所⽰:

Idea创建项⽬时, 显⽰的界⾯, 就是来⾃于这个⽹站, 所以⽹络不好的情况下, 这个界⾯也会打不开

点击⽣成按钮会下载⼀个 Spring Boot 的 zip 包,解压 zip 之后⽬录如下:

然后再使⽤ Idea 打开之后,Spring Boot 项⽬就算创建成功了.
2.3项⽬代码
观察pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>Test</artifactId><version>0.0.1-SNAPSHOT</version><name>Test</name><description>Test</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>org.example.test.TestApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
pom.xml⽂件⾥的具体信息, 不需要过度关注, 我们主要看<dependencies></dependencies>标签⾥⾯的内容
pom⽂件中, 引⼊了两个依赖:
- spring-boot-starter-web:包含了web应⽤开发所需要的常⻅依赖
- spring-boot-starter-test:包含了单元测试所需要的常⻅依赖
⽗⼯程
但是我们发现, 这个依赖没有指定具体的版本号, 但我们的jar包也正常引⼊到项⽬中了.并且查看的话, 是有版本号的.

我们来看看本地仓库的的jar包是否下载下来了呢?

也下载下来了.
为什么没有指定 , 程序也可以正常运⾏呢?
因为每⼀个SpringBoot⼯程,都有⼀个⽗⼯程。 依赖的版本号在⽗⼯程中统⼀管理.
⽗⼯程指定版本号后, 就会⾃动引⼊和所指定版本对应的依赖, 创建的SpringBoot项⽬, 会继承 SpringBoot⽗⼯程.
如下:


2.4 ⽬录介绍

Spring Boot 项⽬有两个主要的⽬录:
- src/main/java: Java 源代码
- src/main/resources: 为静态资源或配置⽂件:
子目录:
- /static:静态资源⽂件夹, ⽐如前期学的js, css, html等静态⽂件, 不需要服务器数据进⾏绑定的⻚⾯
- /templates:模版资源⽂件夹, 主要存放动态模板⽂件, ⽐如JSP, Freemarker, Thymeleaf等需要服务器动态渲染数据的⽂件
- src/test/java: 测试代码源代码
- pom.xml: maven 配置⽂件
2.5 运⾏项⽬
SpringBoot 内置了Tomcat服务器, ⽆需配置即可直接运⾏
Tocmat默认端⼝号是8080, 所以我们程序访问时的端⼝号也是8080
先运行src/main/java/.../项目名Application

打开浏览器,在浏览器中输入localhost:8080然后点击搜索,出现下面的页面:

3.Web服务器
浏览器和服务器两端进⾏数据交互, 使⽤的就是HTTP协议

HTTP 协议就是 HTTP 客⼾端和 HTTP 服务器之间的交互数据的格式.
Web 服务器就是对HTTP协议进⾏封装, 程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议规则),让Web开发更加便捷, 所以Web服务器也被称为WWW服务器, HTTP服务器, 主要功能是提供⽹上信息浏览服务.
常⻅的Web服务器有: Apache,Nginx, IIS, Tomcat, Jboss等 SpringBoot 内置了Tomcat服务器, ⽆需配置即可直接运⾏
Tocmat默认端⼝号是8080, 所以我们程序访问时的端⼝号也是8080
4.总结
- Spring Boot 是为了快速开发 Spring ⽽诞⽣的, Spring Boot 具备:
- Spring Boot 提供了启动添加依赖的功能, 可以快速集成框架.
- 内置web服务器,⽆需配置 Tomcat 等 Web服务器,直接运⾏和部署程序.
- 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发.
- ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点.
相关文章:
【JavaEE】SpringBoot快速上手,探秘 Spring Boot,搭建 Java 项目的智慧脚手架
1.Spring Boot介绍 在学习SpringBoot之前, 我们先来认识⼀下Spring ,我们看下Spring官⽅的介绍 可以看到,Spring让Java程序更加快速, 简单和安全。 Spring对于速度、简单性和⽣产⼒的关注使其成为世界上最流⾏的Java框架。 Spring官⽅提供了很多开源的…...
【C】初阶数据结构9 -- 直接插入排序
前面我们学习了数据结构二叉树,接下来我们将开启一个新的章节,那就是在日常生活中经常会用到的排序算法。 所谓排序算法就是给你一堆数据,让你从小到大(或从大到小)的将这些数据排成一个有序的序列(这些数据…...
Lottie与LottieFiles:快速为前端Web开发注入精美动画的利器
目录 Lottie与LottieFiles:快速为前端Web开发注入精美动画的利器 一、Lottie是什么?从GIF到JSON的动画技术演进 1、传统动画臃肿的Gif 2、Lottie的突破性创新 二、Lottie的核心组件解析(Lottie的技术架构) 1、Lottie核心三要…...
Spring boot创建时常用的依赖
新建SpringBoot Maven项目中pom常用依赖配置及常用的依赖的介绍 1.springboot项目的总(父)依赖大全 <parent><artifactId>spring-boot-dependencies</artifactId><groupId>org.springframework.boot</groupId><version>2.3.3.RELEASE<…...
音乐API
https://neteasecloudmusicapi.vercel.app/docs/#/https://neteasecloudmusicapi.vercel.app/docs/#/ 使用实例 所有榜单内容摘要 说明 : 调用此接口,可获取所有榜单内容摘要 接口地址 : /toplist/detail 调用例子 : /toplist/detail 获取歌单所有歌曲 说明 : 由于网易云…...
UML(统一建模语言)详解:从理论到实践
1. UML概述 1.1 定义与历史背景 统一建模语言(Unified Modeling Language, UML) 是一种标准化的可视化建模语言,用于描述、设计、构造和文档化软件系统。它诞生于1994-1997年,由Grady Booch、James Rumbaugh和Ivar Jacobson&…...
C语言练习题--洛谷P5143攀爬者
题目背景 HKE 考完 GDOI 之后跟他的神犇小伙伴们一起去爬山。 题目描述 他在地形图上标记了 N 个点,每个点 Pi 都有一个坐标 (xi,yi,zi)。所有点对中,高度值 z 不会相等。HKE 准备从最低的点爬到最高的点,他的攀爬满足以下条件&am…...
MySQL常见字段值处理
一、数据拼接 1、CONCAT CONCAT(string1, string2, ..., stringN),将两个或多个字符串连接在一起 自动忽略 NULL 值参数,仅拼接非 NULL 的字符串。 第一个参数必须是分隔符(字符串)。 SELECT CONCAT(Hello, , World); -- 输…...
OpenCV实现图像分割与无缝合并
一、图像分割核心方法 1、阈值分割 #include <opencv2/opencv.hpp> using namespace cv; int main() {Mat img imread("input.jpg", IMREAD_GRAYSCALE);Mat binary;threshold(img, binary, 127, 255, THRESH_BINARY); // 固定阈值分割imwrite("binary.…...
百度之星2023——公园
这道题目用bfs做反而麻烦了。 首先抓题目关键字,要求“最少”,那大概率就是最短路径问题。虽然这题是一个无权图,用bfs也能求最短路径,但是我们知道使用dijkstra是能够利用dist数组持久化最短路径的,相比每次都要bfs&…...
从零搭建微服务项目Pro(第3-1章——本地/OSS图片文件存取)
前言: 在小型demo项目中,一般将图片音频等字节流文件存放本地数据库,但企业级项目中,由于数据量容量有限,需要借助OSS来管理大规模文件。 OSS(对象存储服务,Object Storage Service࿰…...
游戏引擎学习第147天
仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾 具体来说,我们通过隐式计算来解决问题,而不是像数字微分分析器那样逐步增加数据。我们已经涵盖了这个部分,并计划继续处理音量问题。不过,实际上我们现在不需要继续处理…...
Spring boot启动原理及相关组件
优质博文:IT-BLOG-CN 一、Spring Boot应用启动 一个Spring Boot应用的启动通常如下: SpringBootApplication Slf4j public class ApplicationMain {public static void main(String[] args) {ConfigurableApplicationContext ctx SpringApplication.…...
【Linux】信号处理以及补充知识
目录 一、信号被处理的时机: 1、理解: 2、内核态与用户态: 1、概念: 2、重谈地址空间: 3、处理时机: 补充知识: 1、sigaction: 2、函数重入: 3、volatile&…...
微服务——网关、网关登录校验、OpenFeign传递共享信息、Nacos共享配置以及热更新、动态路由
之前学习了Nacos,用于发现并注册、管理项目里所有的微服务,而OpenFeign简化微服务之间的通信,而为了使得前端可以使用微服务项目里的每一个微服务的接口,就应该将所有微服务的接口管理起来方便前端调用,所以有了网关。…...
【leetcode hot 100 19】删除链表的第N个节点
解法一:将ListNode放入ArrayList中,要删除的元素为num list.size()-n。如果num 0则将头节点删除;否则利用num-1个元素的next删除第num个元素。 /*** Definition for singly-linked list.* public class ListNode {* int val;* Lis…...
comctl32!ListView_OnSetItem函数分析LISTSUBITEM结构中的image表示图标位置
第一部分: BOOL ListView_SetSubItem(LV* plv, const LV_ITEM* plvi) { LISTSUBITEM lsi; BOOL fChanged FALSE; int i; int idpa; HDPA hdpa; if (plvi->mask & ~(LVIF_DI_SETITEM | LVIF_TEXT | LVIF_IMAGE | LVIF_STATE)) { …...
数据结构——多项式问题(顺序存储结构or链式存储结构)
补充:malloc函数: malloc 函数是 C 语言标准库中的一个重要函数,位于 <stdlib.h> 头文件中,主要用于在程序运行时动态分配内存。以下将详细介绍其用法。 前面的返回值指针可以自己定义,如 (int*&am…...
【学习方法】技术开发者的提问智慧:如何高效获得解答?
技术开发者的提问智慧:如何高效获得解答? 在技术开发过程中,每个人都会遇到无法解决的问题。此时,我们通常会向团队、社区或论坛求助。然而,为什么有些人的问题能迅速得到解答,而有些人的问题却石沉大海&a…...
记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)
文章目录 记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)一、微信小程序注册摘要1.1 注册流程要点 二、小程序发布流程三、下载工具 记录小白使用 Cursor 开发第一个微信小程序(…...
vue2项目修改浏览器显示的网页图标
1.准备一个新的图标文件,通常是. ico格式,也可以是. Png、. Svg等格式 2.将新的图标文件(例如:faviconAt.png)放入项目的public文件夹中。如下图 public文件夹中的所有文件都会在构建时原样复制到最终的输出目录(通常是dist) 3. 修改vue项目…...
spring boot3.4.3+MybatisPlus3.5.5+swagger-ui2.7.0
使用 MyBatis-Plus 操作 books 表。我们将实现以下功能: 创建实体类 Book。 创建 Mapper 接口 BookMapper。 创建 Service 层 BookService 和 BookServiceImpl。 创建 Controller 层 BookController。 配置 MyBatis-Plus 和数据库连接。 1. 项目结构 src ├─…...
【网络安全工程】任务10:三层交换机配置
CSDN 原创主页:不羁https://blog.csdn.net/2303_76492156?typeblog三层交换机是指在OSI(开放系统互连)模型中的第三层网络层提供路由功能的交换机。它不仅具备二层交换机的交换功能,还能实现路由功能,提供更为灵活的网…...
侯捷 C++ 课程学习笔记:C++内存管理机制
内存管理从平地到万丈高楼 内存管理入门(Memory Management 101) 需要具有动态分配并使用memory(存储(器),(计算机的)内存),使用过C标准库的容器࿰…...
JVM常用概念之本地内存跟踪
问题 Java应用启动或者运行过程中报“内存不足!”,我们该怎么办? 基础知识 对于一个在本地机器运行的JVM应用而言,需要足够的内存来存储机器代码、堆元数据、类元数据、内存分析等数据结构,来保证JVM应用的成功启动以及未来平…...
【鸿蒙开发】Hi3861学习笔记- 软件定时器示例
00. 目录 文章目录 00. 目录01. 定时器概述02. 定时器API03. 定时器常用API3.1 osTimerNew3.2 osTimerDelete3.3 osTimerStart3.4 osTimerStop 04. 程序示例05. 附录 01. 定时器概述 软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设…...
在Html5中仿Matlab自定义色带生成实践
目录 前言 一、RGB的相关知识 1、RGB的基本原理 2、RGB的数值表示 3、应用场景 二、ColorMap生成实战 1、外部库介绍 2、相关API 3、实例生成 三、总结 前言 在现代网页开发与数据可视化领域,色彩的表现力对于信息传达和视觉体验起着至关重要的作用。色带&…...
贪心算法--
1.柠檬水找零 link:860. 柠檬水找零 - 力扣(LeetCode) code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法, 优先花出大面额bill, 尽可能保护小面额billint five 0, ten 0;// 不…...
【学习方法一】
学习方法一 一、通用高效学习法二、学科专项方法三、工具与技术辅助四、习惯与心理策略五、避免常见误区总结六、进阶学习策略七、解决学习痛点八、场景化学习法九、资源与工具推荐十、个性化学习调整十一、长期学习心态十二、常见问题QA十三、应对特殊挑战的学习法十四、健康与…...
k8s启动时calico-kube-controllers与coredns组件一直是pending状态
症状: k8s执行kubectl get po -n kube-system时,以下组件一直>是pending状态: calico-kube-controllerscoredns 当执行 kubectl get po -n kube-system 发现 calico-kube-controllers 和 coredns 一直处于 Pending 状态时,通常…...
