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是进行单元测试的目录

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

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

相关文章

STM32CubeMX安装包Linux平台配置从零实现

从零搭建STM32CubeMX Linux开发环境&#xff1a;不只是安装&#xff0c;更是工程思维的落地你有没有遇到过这样的场景&#xff1f;刚换到Linux系统&#xff0c;信心满满地准备开启高效嵌入式开发之旅&#xff0c;结果一打开终端想启动STM32CubeMX——界面闪退、Java报错、ST-LI…

HY-MT1.5实时字幕系统:低延迟架构

HY-MT1.5实时字幕系统&#xff1a;低延迟架构 1. 引言&#xff1a;腾讯开源的HY-MT1.5翻译模型与实时字幕场景 随着全球化交流日益频繁&#xff0c;跨语言沟通已成为日常刚需。在会议、直播、教育等场景中&#xff0c;实时字幕系统正成为提升信息可及性的重要工具。然而&…

HY-MT1.5格式化输出功能:结构化翻译结果处理

HY-MT1.5格式化输出功能&#xff1a;结构化翻译结果处理 1. 引言&#xff1a;腾讯开源的混元翻译大模型HY-MT1.5 随着全球化进程加速&#xff0c;跨语言沟通需求日益增长&#xff0c;高质量、低延迟的机器翻译技术成为AI应用的关键基础设施。在此背景下&#xff0c;腾讯推出了…

深度剖析串口字符型LCD通信协议:适合初学者的时序解读

串口字符型LCD通信协议深度解析&#xff1a;从零开始读懂时序与驱动在嵌入式开发的早期阶段&#xff0c;你有没有遇到过这样的场景&#xff1f;MCU资源紧张&#xff0c;GPIO捉襟见肘&#xff0c;却还要实现一个简单的状态显示功能。这时候&#xff0c;一块小小的串口字符型LCD往…

Keil5使用教程STM32:I2C通信协议时序深度解析

Keil5实战指南&#xff1a;STM32 I2C通信时序深度拆解与调试避坑全记录你有没有遇到过这样的场景&#xff1f;代码写得一丝不苟&#xff0c;接线也按图索骥&#xff0c;可一运行——I2C就是“叫不醒”传感器。SCL有波形&#xff0c;SDA却像死了一样拉不下去&#xff1b;或者明明…

混元1.5翻译模型:术语库管理与应用最佳实践

混元1.5翻译模型&#xff1a;术语库管理与应用最佳实践 随着全球化进程加速&#xff0c;高质量、可定制的机器翻译需求日益增长。腾讯开源的混元翻译大模型 HY-MT1.5 系列&#xff0c;凭借其在多语言支持、术语控制和边缘部署方面的突出能力&#xff0c;迅速成为开发者和企业构…

HY-MT1.5-7B部署教程:企业级翻译服务搭建

HY-MT1.5-7B部署教程&#xff1a;企业级翻译服务搭建 随着全球化业务的不断扩展&#xff0c;高质量、低延迟的翻译服务成为企业出海、跨语言协作的核心需求。腾讯开源的混元翻译大模型HY-MT1.5系列&#xff0c;凭借其在多语言支持、翻译质量与部署灵活性上的突出表现&#xff…

HY-MT1.5实战案例:法律文书跨语言检索系统搭建教程

HY-MT1.5实战案例&#xff1a;法律文书跨语言检索系统搭建教程 在人工智能与自然语言处理技术快速发展的今天&#xff0c;跨语言信息检索已成为全球化业务中的关键能力。特别是在法律、金融、医疗等专业领域&#xff0c;准确、高效地实现多语言文档的语义对齐与内容检索&#…

usb serial port 驱动下载:新手项目应用前必学基础

从“未知设备”到串口通信&#xff1a;新手必须掌握的USB转串调试全解析 你有没有遇到过这样的场景&#xff1f; 手里的开发板连上电脑&#xff0c;打开设备管理器——结果只看到一个孤零零的“ 未知设备 ”。Arduino IDE提示“端口不可用”&#xff0c;烧录失败&#xff1…

AD原理图生成PCB工业控制设计:手把手教程(从零实现)

从一张原理图到工业级PCB&#xff1a;Altium Designer实战全解析你有没有经历过这样的时刻&#xff1f;辛辛苦苦画完原理图&#xff0c;信心满满地点击“Update PCB”&#xff0c;结果弹出一堆错误&#xff1a;“Footprint not found”、“Net not connected”……更糟的是&…

HY-MT1.5-7B格式化输出:技术文档翻译实践

HY-MT1.5-7B格式化输出&#xff1a;技术文档翻译实践 1. 引言&#xff1a;腾讯开源的混元翻译大模型 随着全球化进程加速&#xff0c;高质量、多语言互译能力成为企业出海、科研协作和内容本地化的关键基础设施。在这一背景下&#xff0c;腾讯推出了混元翻译模型1.5版本&…

Keil5环境下STM32工程搭建实战案例

从零开始搭建STM32工程&#xff1a;Keil5实战全解析 你有没有遇到过这种情况——手头一块STM32最小系统板&#xff0c;电脑装好了Keil5&#xff0c;但点开软件却不知道第一步该点哪里&#xff1f;“ keil5怎么创建新工程 ”这个问题&#xff0c;看似简单&#xff0c;却是无数…

通信原理篇---FDM\TDM\CDM

想象一下&#xff0c;你和几个朋友需要通过一条唯一的通道互相传纸条&#xff0c;但又不能让纸条混在一起。这条通道可能是一根管子、一条传送带&#xff0c;或者一个房间的空气。 这三种复用技术&#xff0c;就是解决这个问题的三种天才策略。 一、频分复用&#xff08;FDM&a…

混元翻译1.5实战:全球化网站自动翻译

混元翻译1.5实战&#xff1a;全球化网站自动翻译 随着全球化业务的不断扩展&#xff0c;多语言内容的实时、高质量翻译已成为企业出海和国际用户服务的关键能力。传统商业翻译 API 虽然成熟&#xff0c;但在成本、隐私控制和定制化方面存在局限。腾讯近期开源的混元翻译大模型…

通信原理篇---HDB3码

一、核心问题&#xff1a;为什么要用HDB3码&#xff1f;想象你要用一盏灯来传递一串二进制密码&#xff08;0和1&#xff09;给远方的人。规则A&#xff08;简单方法&#xff09;&#xff1a;亮灯&#xff08;高电平&#xff09;表示“1”&#xff0c;灭灯&#xff08;零电平&a…

腾讯开源翻译模型HY-MT1.5:从零开始部署教程

腾讯开源翻译模型HY-MT1.5&#xff1a;从零开始部署教程 1. 引言 随着全球化进程的加速&#xff0c;高质量、低延迟的机器翻译需求日益增长。腾讯近期开源了其最新的混元翻译大模型 HY-MT1.5 系列&#xff0c;包含两个版本&#xff1a;HY-MT1.5-1.8B 和 HY-MT1.5-7B&#xff0…

Keil5 IDE环境搭建实战案例(适用于Win10/Win11)

Keil5 IDE环境搭建实战&#xff1a;从零开始构建稳定嵌入式开发平台&#xff08;Win10/Win11适用&#xff09; 你有没有遇到过这种情况——刚下载完Keil5&#xff0c;双击安装包却弹出“访问被拒绝”&#xff1f;或者明明插上了ST-Link调试器&#xff0c;设备管理器里却显示“…

HY-MT1.5-1.8B边缘计算:智能硬件集成案例

HY-MT1.5-1.8B边缘计算&#xff1a;智能硬件集成案例 1. 引言&#xff1a;从云端到边缘的翻译革命 随着多语言交流需求的爆发式增长&#xff0c;高质量、低延迟的实时翻译已成为智能硬件和边缘计算场景的核心诉求。传统翻译服务大多依赖云端大模型&#xff0c;存在网络延迟高…

HY-MT1.5格式化输出实战:JSON/XML翻译处理

HY-MT1.5格式化输出实战&#xff1a;JSON/XML翻译处理 1. 引言 1.1 背景与业务需求 在多语言全球化应用日益普及的今天&#xff0c;企业级翻译系统不仅需要高精度的语言转换能力&#xff0c;还必须支持结构化数据&#xff08;如 JSON、XML&#xff09;的保留格式翻译。传统翻…

腾讯混元翻译1.5:行业术语库建设指南

腾讯混元翻译1.5&#xff1a;行业术语库建设指南 1. 引言&#xff1a;大模型时代的精准翻译需求 随着全球化进程加速&#xff0c;跨语言沟通已成为企业出海、科研协作和内容本地化的核心环节。然而&#xff0c;通用翻译模型在面对专业领域术语&#xff08;如医疗、法律、金融…