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

【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已经集成了

  1. 查找插件并下载
    在这里插入图片描述
    点击 , 进⼊⽹⻚下载插件

    此处不要直接点击 Install 直接点击Install, 安装的是收费版(⼟豪请随意)

    插件地址: 点击跳转
    在这里插入图片描述

    插件对Idea版本有要求, Idea版本需要在2021.1 -2022.1.4范围内, 不在这个范围内需要重新卸载安装, 卸载要删除注册表的内容

  2. 安装插件
    按下图序号操作, 逐步安装插件
    在这里插入图片描述
    选择刚才下载的插件, 安装, 重启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 项⽬有两个主要的⽬录

  1. src/main/java: Java 源代码
  2. 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.总结

  1. Spring Boot 是为了快速开发 Spring ⽽诞⽣的, Spring Boot 具备:
  2. Spring Boot 提供了启动添加依赖的功能, 可以快速集成框架.
  3. 内置web服务器,⽆需配置 Tomcat 等 Web服务器,直接运⾏和部署程序.
  4. 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发.
  5. ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点.

相关文章:

【JavaEE】SpringBoot快速上手,探秘 Spring Boot,搭建 Java 项目的智慧脚手架

1.Spring Boot介绍 在学习SpringBoot之前, 我们先来认识⼀下Spring &#xff0c;我们看下Spring官⽅的介绍 可以看到&#xff0c;Spring让Java程序更加快速, 简单和安全。 Spring对于速度、简单性和⽣产⼒的关注使其成为世界上最流⾏的Java框架。 Spring官⽅提供了很多开源的…...

【C】初阶数据结构9 -- 直接插入排序

前面我们学习了数据结构二叉树&#xff0c;接下来我们将开启一个新的章节&#xff0c;那就是在日常生活中经常会用到的排序算法。 所谓排序算法就是给你一堆数据&#xff0c;让你从小到大&#xff08;或从大到小&#xff09;的将这些数据排成一个有序的序列&#xff08;这些数据…...

Lottie与LottieFiles:快速为前端Web开发注入精美动画的利器

目录 Lottie与LottieFiles&#xff1a;快速为前端Web开发注入精美动画的利器 一、Lottie是什么&#xff1f;从GIF到JSON的动画技术演进 1、传统动画臃肿的Gif 2、Lottie的突破性创新 二、Lottie的核心组件解析&#xff08;Lottie的技术架构&#xff09; 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 定义与历史背景 统一建模语言&#xff08;Unified Modeling Language, UML&#xff09; 是一种标准化的可视化建模语言&#xff0c;用于描述、设计、构造和文档化软件系统。它诞生于1994-1997年&#xff0c;由Grady Booch、James Rumbaugh和Ivar Jacobson&…...

C语言练习题--洛谷P5143攀爬者

题目背景 HKE 考完 GDOI 之后跟他的神犇小伙伴们一起去爬山。 题目描述 他在地形图上标记了 N 个点&#xff0c;每个点 Pi​ 都有一个坐标 (xi​,yi​,zi​)。所有点对中&#xff0c;高度值 z 不会相等。HKE 准备从最低的点爬到最高的点&#xff0c;他的攀爬满足以下条件&am…...

MySQL常见字段值处理

一、数据拼接 1、CONCAT CONCAT(string1, string2, ..., stringN)&#xff0c;将两个或多个字符串连接在一起 自动忽略 NULL 值参数&#xff0c;仅拼接非 NULL 的字符串。 第一个参数必须是分隔符&#xff08;字符串&#xff09;。 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做反而麻烦了。 首先抓题目关键字&#xff0c;要求“最少”&#xff0c;那大概率就是最短路径问题。虽然这题是一个无权图&#xff0c;用bfs也能求最短路径&#xff0c;但是我们知道使用dijkstra是能够利用dist数组持久化最短路径的&#xff0c;相比每次都要bfs&…...

从零搭建微服务项目Pro(第3-1章——本地/OSS图片文件存取)

前言&#xff1a; 在小型demo项目中&#xff0c;一般将图片音频等字节流文件存放本地数据库&#xff0c;但企业级项目中&#xff0c;由于数据量容量有限&#xff0c;需要借助OSS来管理大规模文件。 OSS&#xff08;对象存储服务&#xff0c;Object Storage Service&#xff0…...

游戏引擎学习第147天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾 具体来说&#xff0c;我们通过隐式计算来解决问题&#xff0c;而不是像数字微分分析器那样逐步增加数据。我们已经涵盖了这个部分&#xff0c;并计划继续处理音量问题。不过&#xff0c;实际上我们现在不需要继续处理…...

Spring boot启动原理及相关组件

优质博文&#xff1a;IT-BLOG-CN 一、Spring Boot应用启动 一个Spring Boot应用的启动通常如下&#xff1a; SpringBootApplication Slf4j public class ApplicationMain {public static void main(String[] args) {ConfigurableApplicationContext ctx SpringApplication.…...

【Linux】信号处理以及补充知识

目录 一、信号被处理的时机&#xff1a; 1、理解&#xff1a; 2、内核态与用户态&#xff1a; 1、概念&#xff1a; 2、重谈地址空间&#xff1a; 3、处理时机&#xff1a; 补充知识&#xff1a; 1、sigaction&#xff1a; 2、函数重入&#xff1a; 3、volatile&…...

微服务——网关、网关登录校验、OpenFeign传递共享信息、Nacos共享配置以及热更新、动态路由

之前学习了Nacos&#xff0c;用于发现并注册、管理项目里所有的微服务&#xff0c;而OpenFeign简化微服务之间的通信&#xff0c;而为了使得前端可以使用微服务项目里的每一个微服务的接口&#xff0c;就应该将所有微服务的接口管理起来方便前端调用&#xff0c;所以有了网关。…...

【leetcode hot 100 19】删除链表的第N个节点

解法一&#xff1a;将ListNode放入ArrayList中&#xff0c;要删除的元素为num list.size()-n。如果num 0则将头节点删除&#xff1b;否则利用num-1个元素的next删除第num个元素。 /*** Definition for singly-linked list.* public class ListNode {* int val;* Lis…...

comctl32!ListView_OnSetItem函数分析LISTSUBITEM结构中的image表示图标位置

第一部分&#xff1a; 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链式存储结构)

补充&#xff1a;malloc函数&#xff1a; malloc 函数是 C 语言标准库中的一个重要函数&#xff0c;位于 <stdlib.h> 头文件中&#xff0c;主要用于在程序运行时动态分配内存。以下将详细介绍其用法。 前面的返回值指针可以自己定义&#xff0c;如 &#xff08;int*&am…...

【学习方法】技术开发者的提问智慧:如何高效获得解答?

技术开发者的提问智慧&#xff1a;如何高效获得解答&#xff1f; 在技术开发过程中&#xff0c;每个人都会遇到无法解决的问题。此时&#xff0c;我们通常会向团队、社区或论坛求助。然而&#xff0c;为什么有些人的问题能迅速得到解答&#xff0c;而有些人的问题却石沉大海&a…...

记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)

文章目录 记录小白使用 Cursor 开发第一个微信小程序&#xff08;一&#xff09;&#xff1a;注册账号及下载工具&#xff08;250308&#xff09;一、微信小程序注册摘要1.1 注册流程要点 二、小程序发布流程三、下载工具 记录小白使用 Cursor 开发第一个微信小程序&#xff08…...

vue2项目修改浏览器显示的网页图标

1.准备一个新的图标文件&#xff0c;通常是. ico格式&#xff0c;也可以是. Png、. Svg等格式 2.将新的图标文件(例如&#xff1a;faviconAt.png)放入项目的public文件夹中。如下图 public文件夹中的所有文件都会在构建时原样复制到最终的输出目录(通常是dist) 3. 修改vue项目…...

spring boot3.4.3+MybatisPlus3.5.5+swagger-ui2.7.0

使用 MyBatis-Plus 操作 books 表。我们将实现以下功能&#xff1a; 创建实体类 Book。 创建 Mapper 接口 BookMapper。 创建 Service 层 BookService 和 BookServiceImpl。 创建 Controller 层 BookController。 配置 MyBatis-Plus 和数据库连接。 1. 项目结构 src ├─…...

【网络安全工程】任务10:三层交换机配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog三层交换机是指在OSI&#xff08;开放系统互连&#xff09;模型中的第三层网络层提供路由功能的交换机。它不仅具备二层交换机的交换功能&#xff0c;还能实现路由功能&#xff0c;提供更为灵活的网…...

侯捷 C++ 课程学习笔记:C++内存管理机制

内存管理从平地到万丈高楼 内存管理入门&#xff08;Memory Management 101&#xff09; 需要具有动态分配并使用memory&#xff08;存储&#xff08;器&#xff09;&#xff0c;&#xff08;计算机的&#xff09;内存&#xff09;&#xff0c;使用过C标准库的容器&#xff0…...

JVM常用概念之本地内存跟踪

问题 Java应用启动或者运行过程中报“内存不足&#xff01;”&#xff0c;我们该怎么办? 基础知识 对于一个在本地机器运行的JVM应用而言&#xff0c;需要足够的内存来存储机器代码、堆元数据、类元数据、内存分析等数据结构&#xff0c;来保证JVM应用的成功启动以及未来平…...

【鸿蒙开发】Hi3861学习笔记- 软件定时器示例

00. 目录 文章目录 00. 目录01. 定时器概述02. 定时器API03. 定时器常用API3.1 osTimerNew3.2 osTimerDelete3.3 osTimerStart3.4 osTimerStop 04. 程序示例05. 附录 01. 定时器概述 软件定时器&#xff0c;是基于系统Tick时钟中断且由软件来模拟的定时器&#xff0c;当经过设…...

在Html5中仿Matlab自定义色带生成实践

目录 前言 一、RGB的相关知识 1、RGB的基本原理 2、RGB的数值表示 3、应用场景 二、ColorMap生成实战 1、外部库介绍 2、相关API 3、实例生成 三、总结 前言 在现代网页开发与数据可视化领域&#xff0c;色彩的表现力对于信息传达和视觉体验起着至关重要的作用。色带&…...

贪心算法--

1.柠檬水找零 link:860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法&#xff0c; 优先花出大面额bill&#xff0c; 尽可能保护小面额billint five 0, ten 0;// 不…...

【学习方法一】

学习方法一 一、通用高效学习法二、学科专项方法三、工具与技术辅助四、习惯与心理策略五、避免常见误区总结六、进阶学习策略七、解决学习痛点八、场景化学习法九、资源与工具推荐十、个性化学习调整十一、长期学习心态十二、常见问题QA十三、应对特殊挑战的学习法十四、健康与…...

k8s启动时calico-kube-controllers与coredns组件一直是pending状态

症状&#xff1a; k8s执行kubectl get po -n kube-system时&#xff0c;以下组件一直>是pending状态&#xff1a; calico-kube-controllerscoredns 当执行 kubectl get po -n kube-system 发现 calico-kube-controllers 和 coredns 一直处于 Pending 状态时&#xff0c;通常…...