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

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 8Java 11,在开发Spring Boot 3.0应用程序之前,需要升级JDK

相信很多人现在都还是用的JDK 8,使用Spring Boot 3.0的话,还是很有必要去熟悉每个版本JAVA的增强特性,后续会出专栏详细介绍每个版本的变化,而Java 17的相对上一版本的JEPJDK增强提案)如下:

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 项目的工具,不仅完美支持IDEAEclipse,而且能自动生成启动类和单元测试代码,给开发人员带来极大的便利。

方式1:网页在线生成

打开Spring Initializr官方页面,可以在网页在线生成Spring Boot项目代码,整个页面主要分三大部分:
在这里插入图片描述
在最左边,填写项目信息,说明如下:

  • Project:项目构建工具,可以选择GradleMavenSpring自己所有的项目都是使用Gradle
  • Language:选择开发语言
  • Spring Boot:选择Spring Boot版本
  • Project Metadata:项目信息
    • Group:项目组织
    • Artifact:项目唯一标识符
    • Name:项目名称
    • Description:项目描述
    • Package name:包名
    • Packaging:打包方式
    • JavaJDK版本

最右边点击添加依赖可以选择项目需要的依赖包:
在这里插入图片描述
在最下方,分别是生成、预览、分享功能,点击生成后,代码自动下载到本地,然后使用开发工具导入就可以了~
在这里插入图片描述

方式2:使用IDEA

IDEAEclipse继集成了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

.mvnmvnwmvnw.cmd这几个文件都属于Maven Wrapper.mvn存放Maven Wrapper安装文件、配置;mvnwmvnw.cmdLinuxWindows系统执行相关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项目

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

高频 SQL 50 题(基础版)_1667. 修复表中的名字

高频 SQL 50 题&#xff08;基础版&#xff09;_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 &#xff0c; 输入 Get-AppxPackage -AllUsers Microsoft.WindowsStore* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “ ( ( (_.InstallLocation)\AppXManifest.xml”} 按下enter按键&#xff0c;就OK了...

c++同步机制

总结 多线程访问共享数据时需要加锁 多线程数据竞争 假如有一个变量shared_variable被10个线程共享&#xff0c;每个线程在循环中对shared_variable进行 1000 次累加操作&#xff0c;我们期望最终值为10000。 #include <iostream> #include <thread> #include …...

RuoYi框架介绍,以及如何基于Python使用RuoYi框架

若依框架&#xff08;RuoYi&#xff09;是一款基于Spring Boot和Vue.js的开源快速开发平台&#xff0c;广泛应用于企业级应用开发。它提供了丰富的功能模块和代码生成工具&#xff0c;帮助开发者快速搭建后台管理系统。 主要特点 前后端分离&#xff1a;前端采用Vue.js&#x…...

Go 语言环境安装

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

vector 面试点总结

ps&#xff1a;部分内容使用“AI”查询 一、入门 1、什么是vector 动态数组容器&#xff0c;支持自动扩容、随机访问和连续内存存储。 2、怎么创建-初始化vector std::vector<int> v; // 创建空vectorstd::vector<int> v {1, 2, 3}; // 直接初始化std::vec…...

Java 8 新特性

Java 8 引入了一系列重要的新特性&#xff0c;极大地增强了 Java 语言的功能&#xff0c;尤其是在 函数式编程、流处理、日期时间 API 和 默认方法 等方面。这些新特性不仅提升了代码的可读性和简洁性&#xff0c;还改善了并发处理的性能。以下是 Java 8 主要新特性的详细说明。…...

知识库技术选型:主流Embedding模型特性对比

知识库技术选型&#xff1a;主流Embedding模型特性对比 1. 知识库与大模型结合的背景 知识库是存储和管理结构化知识的系统&#xff0c;广泛应用于问答系统、推荐系统和搜索引擎等领域。随着大语言模型&#xff08;LLM&#xff09;的发展&#xff0c;知识库与大模型的结合成为…...

CAN总线通信协议学习2——数据链路层之帧格式

1 帧格式 帧格式可理解为定义了传输的数据&#xff08;叫报文&#xff09;应该“长什么样”来传输&#xff0c;也为后续设定一些规则如错误检查机制提供了思路。 首先&#xff0c;帧格式可分为以下5种类型&#xff1a; PS&#xff1a;CAN总线任意一个设备可当收也可当发&#…...

基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局高阶应用

文字目录 前言第一章、生态安全评价理论及方法介绍一、生态安全评价简介二、生态服务能力简介三、生态安全格局构建研究方法简介 第二章、平台基础一、ArcGIS Pro介绍二、Python环境配置 第三章、数据获取与清洗一、数据获取&#xff1a;二、数据预处理&#xff08;ArcGIS Pro及…...

神经网络在电力电子与电机控制中的应用

神经网络&#xff08;Neural Networks&#xff09;简介 神经网络是一种受生物神经元启发的机器学习模型&#xff0c;能够通过大量数据学习输入与输出之间的非线性映射关系。其核心结构包括&#xff1a; 输入层&#xff1a;接收外部数据&#xff08;如传感器信号、控制指令&…...

llama-factory || AutoDL平台

报错如下&#xff1a; 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极限学习机解决回归问题

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

力扣785. 判断二分图

力扣785. 判断二分图 题目 题目解析及思路 题目要求将所有节点分成两部分&#xff0c;每条边的两个端点都必须在不同集合中 二分图&#xff1a;BFS/DFS/并查集 因为图不一定联通&#xff0c;所以枚举所有点都做bfs(如果没联通的话) 代码 class Solution { public:bool is…...

【硬件工程师成长】之是否需要组合电容进行滤波的考虑

在电子电路设计中&#xff0c;判断是否需要使用组合电容进行滤波&#xff0c;需综合考虑以下因素&#xff1a; 1. 噪声频谱分析 高频与低频噪声共存&#xff1a;若电源或信号中同时存在低频&#xff08;如工频纹波&#xff09;和高频噪声&#xff08;如开关电源的开关噪声、数字…...

Pythonweb开发框架—Flask工程创建和@app.route使用详解

1.创建工程 如果pycharm是专业版&#xff0c;直接NewProject—>Flask 填写工程name和location后&#xff0c;点击右下角【create】&#xff0c;就会新建一个flask工程&#xff0c;工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件 templates&#xff1…...

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 引入的一种新的引用类型&#xff0c;用 && 表示。它主要用于区分左值和右值&#xff0c;并且可以实现移动语义&#xff0c;避免不必要的深拷贝&#xff0c;提高程序的性能。左值通常是可以取地址的表达式&#xf…...

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…...

差分隐私矩阵机制与FFT优化:保护多轮迭代计算的高效方法

1. 差分隐私矩阵分解&#xff1a;从理论到工程实践在联邦学习、推荐系统这些需要频繁进行多轮迭代计算的场景里&#xff0c;我们常常面临一个核心矛盾&#xff1a;既要利用全体参与者的数据来训练一个高质量的全局模型&#xff0c;又要确保任何单个参与者的敏感信息不会在训练过…...

openEuler 22.03 LST上安装RealVNC 6.11,我踩过的那些依赖坑(附离线包下载方法)

在openEuler 22.03 LST离线环境中部署RealVNC 6.11的完整指南当我们需要在隔离网络的生产环境中部署远程桌面服务时&#xff0c;依赖管理往往成为最棘手的挑战。本文将分享我在openEuler 22.03 LST系统上安装RealVNC 6.11时积累的实战经验&#xff0c;特别是如何处理复杂的离线…...

虚幻引擎Pak文件可视化分析工具原理与实践

1. 为什么一个Pak文件查看器值得花两周重写三遍&#xff1f;虚幻引擎项目打包后生成的.pak文件&#xff0c;对绝大多数开发者来说就是个“黑盒”——你清楚它装着所有资源&#xff1a;贴图、音频、蓝图、关卡数据&#xff0c;甚至UAsset序列化后的二进制结构&#xff1b;但你完…...

孩子学英语怎么选择

需要一点点建议哦...

Unity C#不是编程语言,而是与引擎对话的指令系统

1. 这不是“学编程”&#xff0c;而是重新建立你和计算机对话的语法体系很多人点开这个标题&#xff0c;心里想的是&#xff1a;“不就是写几行代码嘛&#xff0c;网上教程多的是。”我带过三十多个零基础学员做 Unity 小项目&#xff0c;其中超过 21 人卡在同一个地方——不是…...

2026数字营销专业学数据分析的职业优势

一、数字营销与数据分析的融合趋势2026年数字营销领域将进一步依赖数据驱动决策。随着消费者行为数字化程度加深&#xff0c;企业需通过数据分析实现个性化营销、动态定价和实时优化。复合型人才需同时掌握营销策略与数据建模能力&#xff0c;以应对跨渠道归因、隐私安全等复杂…...

智慧农业棉花棉铃病害成熟度检测数据集VOC+YOLO格式969张6类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;969标注数量(xml文件个数)&#xff1a;969标注数量(txt文件个数)&#xff1a;969标注类别数&…...

Cortex-M55内存属性与缓存机制深度解析

1. Cortex-M55内存属性与缓存机制解析 在嵌入式系统开发中&#xff0c;正确配置内存属性对于系统性能和功能正确性至关重要。Cortex-M55作为Armv8-M架构的处理器&#xff0c;通过内存保护单元(MPU)和内存属性间接寄存器(MAIR_ATTR)提供了灵活的内存属性配置能力。本文将深入剖析…...

当AI推理遭遇通信瓶颈时,NIXL如何重新定义高性能数据传输架构?

当AI推理遭遇通信瓶颈时&#xff0c;NIXL如何重新定义高性能数据传输架构&#xff1f; 【免费下载链接】nixl NVIDIA Inference Xfer Library (NIXL) 项目地址: https://gitcode.com/gh_mirrors/ni/nixl 在大规模分布式AI推理场景中&#xff0c;数据传输和通信瓶颈已成为…...

Triton模型服务化实战:从Notebook到高可用推理API

1. 项目概述&#xff1a;这不是一次模型训练&#xff0c;而是一场工程交付“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着一个被太多人轻描淡写、却让无数团队在临门一脚时彻底卡死的真相&#xff1a;Notebook 是思考的草稿纸&…...