Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目
有道无术,术尚可求,有术无道,止于术。
本系列Spring Boot版本3.0.3
源码地址:https://gitee.com/pearl-organization/study-spring-boot3
文章目录
-
- 前言
- 安装JDK 17
- 创建Spring Boot 项目
-
- 方式1:网页在线生成
- 方式2:使用IDEA
- 项目结构
-
- Maven Wrapper
- pom.xml
- java目录
- resources目录
- test目录
前言
本篇主要介绍使用spring initializr
快速创建一个Spring Boot 3.0
项目以及工程结构说明。
安装JDK 17
Oracle JDK 17 发布地址
Oracle JDK 17 下载地址
OpenJDK 17 发布地址
OpenJDK 17 下载地址
Spring Boot 3.0
需要Java 17
作为最低版本。如果当前正在使用Java 8
或Java 11
,在开发Spring Boot 3.0
应用程序之前,需要升级JDK
。
相信很多人现在都还是用的JDK 8
,使用Spring Boot 3.0
的话,还是很有必要去熟悉每个版本JAVA
的增强特性,后续会出专栏详细介绍每个版本的变化,而Java 17
的相对上一版本的JEP
(JDK增强提案)如下:
306: Restore Always-Strict Floating-Point Semantics # 恢复始终严格模式(Always-Strict)的浮点语义
356: Enhanced Pseudo-Random Number Generators # 增强型伪随机数生成器
382: New macOS Rendering Pipeline # 新增macOS渲染管道
391: macOS/AArch64 Port # 支持将JDK移植到macOS或AArch64
398: Deprecate the Applet API for Removal # 移除过时的Applet API
403: Strongly Encapsulate JDK Internals # 强封装JDK内部API
406: Pattern Matching for switch (Preview) # switch 匹配模式(预览版本)
407: Remove RMI Activation # 移除RMI(远程方法调用)激活机制
409: Sealed Classes # 密封类
410: Remove the Experimental AOT and JIT Compiler # 移除实验性AOT和JIT编译器
411: Deprecate the Security Manager for Removal # 弃用待移除的安全管理器(Security Manager)
412: Foreign Function & Memory API (Incubator) # 外部函数和内存API(孵化器)孵化阶段
414: Vector API (Second Incubator) # Vector API第二孵化阶段
415: Context-Specific Deserialization Filters #上下文特定的反序列化过滤器
这里就不介绍下载安装的方法了,相信懂的都懂???
创建Spring Boot 项目
Spring Initializr
是官方提供的一个用来初始化一个Spring boot
项目的工具,不仅完美支持IDEA
和Eclipse
,而且能自动生成启动类和单元测试代码,给开发人员带来极大的便利。
方式1:网页在线生成
打开Spring Initializr官方页面,可以在网页在线生成Spring Boot
项目代码,整个页面主要分三大部分:
在最左边,填写项目信息,说明如下:
- Project:项目构建工具,可以选择
Gradle
、Maven
,Spring
自己所有的项目都是使用Gradle
- Language:选择开发语言
- Spring Boot:选择
Spring Boot
版本 - Project Metadata:项目信息
- Group:项目组织
- Artifact:项目唯一标识符
- Name:项目名称
- Description:项目描述
- Package name:包名
- Packaging:打包方式
- Java:
JDK
版本
最右边点击添加依赖可以选择项目需要的依赖包:
在最下方,分别是生成、预览、分享功能,点击生成后,代码自动下载到本地,然后使用开发工具导入就可以了~
方式2:使用IDEA
IDEA
和Eclipse
继集成了Spring Initializr
,可以直接在开发工具中创建工程,一般都是使用该方式。
首先创建一个工程或模块:
选择Spring Initializr
来初始化项目:
然后填写项目信息,比如模块名、构建工具等:
接着下一步选择Spring Boot
版本、添加依赖:
点击Next
,核对模块名、模块位置是否正确:
点击Finish
,很快项目就自动创建好了:
项目结构
接下来,我们了解下生成项目的各个目录和文件。
├── .mvn
│ └── wrapper
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src├── main│ ├── java│ └── resources└── test├── java└── resources
Maven Wrapper
安装好Maven
后,可以使用mvn
命令进行编译打包,项目中直接使用当前系统的Maven
环境,这种方式存在一个问题,如果没有安装Maven
,或者下载别人的项目和自身本地Maven
环境版本不兼容时,就得重新安装Maven
。
为了解决上述问题,每个项目可以指定其本身所依赖的独立Maven
环境,简单来说,就是给该项目装一个单独的Maven
,只作用于本项目,这就是Maven Wrapper
。
.mvn
、 mvnw
、mvnw.cmd
这几个文件都属于Maven Wrapper
。.mvn
存放Maven Wrapper
安装文件、配置;mvnw
、mvnw.cmd
是Linux
和Windows
系统执行相关Maven
命令的脚本。
一般也用不到,所以可以直接删除这几个文件:
pom.xml
pom.xml
应该都比较熟悉了,Maven
配置文件,用以描述项目的各种信息,主要看下Spring Boot
生成的相关内容。
首先是parent
,继承了Spring Boot
提供的父 POM
,在spring-boot-starter-parent
中又继承了spring-boot-dependencies
。在spring-boot-dependencies
中,定义了很多依赖包的版本。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.3</version><relativePath/> <!-- lookup parent from repository --></parent>
接着是dependencies
声明项目本身所需要的依赖,因为spring-boot-dependencies
中已定义好很多版本,所以常用的不需要写版本号,在实际开发时,尽量使用Spring Boot
已定义好的版本,因为这些是进行了版本兼容测试的。
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
build
构建模块中,添加了官方提供的Maven
插件spring-boot-maven-plugin
,提供了构建Docker
镜像、打包为可执行JAR
包等功能。
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
相关命令如下所示:
java目录
java
目录存放源代码文件:
自动生成了创建了一个启动类,该类是程序启动的入口,运行main
方法程序启动,@SpringBootApplication
是启动类核心注解,标记当前类为启动类,启动时,会从该注解中获取很多当前程序信息,后面会进行源码解读。
@SpringBootApplication
public class SpringBoot3BaseDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringBoot3BaseDemoApplication.class, args);}
}
resources目录
resources
目录来存放一些资源文件,其中最重要的是application.properties
,所有Spring Boot
应用的配置都写在这里,static
存放静态资源,比如cssjs
等,templates
用于存放模板文件。
test目录
test
是进行单元测试的目录
相关文章:

Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.3 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 前言安装JDK 17创建Spring Boot 项目 方式1:网页在线生成方式2&#…...

高频 SQL 50 题(基础版)_1667. 修复表中的名字
高频 SQL 50 题(基础版)_1667. 修复表中的名字 select user_id ,concat(upper(substring(name,1,1)),lower(substring(name,2))) as name from Users order by user_id...

Windwos10 系统没有微软商店(Microsoft Store)怎么办?
操作方法 管理员身份打开power shell , 输入 Get-AppxPackage -AllUsers Microsoft.WindowsStore* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “ ( ( (_.InstallLocation)\AppXManifest.xml”} 按下enter按键,就OK了...
c++同步机制
总结 多线程访问共享数据时需要加锁 多线程数据竞争 假如有一个变量shared_variable被10个线程共享,每个线程在循环中对shared_variable进行 1000 次累加操作,我们期望最终值为10000。 #include <iostream> #include <thread> #include …...
RuoYi框架介绍,以及如何基于Python使用RuoYi框架
若依框架(RuoYi)是一款基于Spring Boot和Vue.js的开源快速开发平台,广泛应用于企业级应用开发。它提供了丰富的功能模块和代码生成工具,帮助开发者快速搭建后台管理系统。 主要特点 前后端分离:前端采用Vue.js&#x…...

Go 语言环境安装
1.go官网下载安装包 All releases - The Go Programming Language 双击安装,一路下一步 2.安装完后查看版本 打开cmd 输入 以下 ,查看语言版本 go version 查看环境变量是否自动设置成功...

vector 面试点总结
ps:部分内容使用“AI”查询 一、入门 1、什么是vector 动态数组容器,支持自动扩容、随机访问和连续内存存储。 2、怎么创建-初始化vector std::vector<int> v; // 创建空vectorstd::vector<int> v {1, 2, 3}; // 直接初始化std::vec…...
Java 8 新特性
Java 8 引入了一系列重要的新特性,极大地增强了 Java 语言的功能,尤其是在 函数式编程、流处理、日期时间 API 和 默认方法 等方面。这些新特性不仅提升了代码的可读性和简洁性,还改善了并发处理的性能。以下是 Java 8 主要新特性的详细说明。…...
知识库技术选型:主流Embedding模型特性对比
知识库技术选型:主流Embedding模型特性对比 1. 知识库与大模型结合的背景 知识库是存储和管理结构化知识的系统,广泛应用于问答系统、推荐系统和搜索引擎等领域。随着大语言模型(LLM)的发展,知识库与大模型的结合成为…...

CAN总线通信协议学习2——数据链路层之帧格式
1 帧格式 帧格式可理解为定义了传输的数据(叫报文)应该“长什么样”来传输,也为后续设定一些规则如错误检查机制提供了思路。 首先,帧格式可分为以下5种类型: PS:CAN总线任意一个设备可当收也可当发&#…...

基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局高阶应用
文字目录 前言第一章、生态安全评价理论及方法介绍一、生态安全评价简介二、生态服务能力简介三、生态安全格局构建研究方法简介 第二章、平台基础一、ArcGIS Pro介绍二、Python环境配置 第三章、数据获取与清洗一、数据获取:二、数据预处理(ArcGIS Pro及…...

神经网络在电力电子与电机控制中的应用
神经网络(Neural Networks)简介 神经网络是一种受生物神经元启发的机器学习模型,能够通过大量数据学习输入与输出之间的非线性映射关系。其核心结构包括: 输入层:接收外部数据(如传感器信号、控制指令&…...
llama-factory || AutoDL平台
报错如下: rootautodl-container-d83e478b47-3def8c49:~/LLaMA-Factory# llamafactory-cli webui * Running on local URL: http://0.0.0.0:7860Could not create share link. Missing file: /root/miniconda3/lib/python3.10/site-packages/gradio/frpc_linux_am…...

数学建模:MATLAB极限学习机解决回归问题
一、简述 极限学习机是一种用于训练单隐层前馈神经网络的算法,由输入层、隐藏层、输出层组成。 基本原理: 输入层接受传入的样本数据。 在训练过程中随机生成从输入层到隐藏层的所有连接权重以及每个隐藏层神经元的偏置值,这些参数在整个…...

力扣785. 判断二分图
力扣785. 判断二分图 题目 题目解析及思路 题目要求将所有节点分成两部分,每条边的两个端点都必须在不同集合中 二分图:BFS/DFS/并查集 因为图不一定联通,所以枚举所有点都做bfs(如果没联通的话) 代码 class Solution { public:bool is…...
【硬件工程师成长】之是否需要组合电容进行滤波的考虑
在电子电路设计中,判断是否需要使用组合电容进行滤波,需综合考虑以下因素: 1. 噪声频谱分析 高频与低频噪声共存:若电源或信号中同时存在低频(如工频纹波)和高频噪声(如开关电源的开关噪声、数字…...

Pythonweb开发框架—Flask工程创建和@app.route使用详解
1.创建工程 如果pycharm是专业版,直接NewProject—>Flask 填写工程name和location后,点击右下角【create】,就会新建一个flask工程,工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件 templates࿱…...
005 公网访问 docker rocketmq
文章目录 创建自定义网络创建NameServer容器创建Broker容器正式开始启动 Nameserver 容器启动 Broker 容器并关联 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf检查 namesrv 解析检查 Broker 注册状态Nameserver 日志Broker 日志检查容器日志手动指定 Br…...
C++11中的右值引用和完美转发
C11中的右值引用和完美转发 右值引用 右值引用是 C11 引入的一种新的引用类型,用 && 表示。它主要用于区分左值和右值,并且可以实现移动语义,避免不必要的深拷贝,提高程序的性能。左值通常是可以取地址的表达式…...

txt 转 json 使用python语言
需求: 把如下的txt文档转成json输出 代码 import jsondef txt_to_json(input_file, output_file):data_list []with open(input_file, r, encodingutf-8) as f:for line in f:# 分割数据并去除换行符parts line.strip().split(,)print(f"{parts}")print(type(par…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...