Spring Boot 3.0系列【3】基础篇之使用Spring Initializr快速创建项目

news2024/12/27 16:03:48

有道无术,术尚可求,有术无道,止于术。

本系列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存放静态资源,比如css\js等,templates用于存放模板文件。
在这里插入图片描述

test目录

test是进行单元测试的目录
在这里插入图片描述

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

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

相关文章

PyQGIS开发--自动化地图布局案例

前言创建地图布局是 GIS 作业结束时的一项常见任务。 它用于呈现最终结果的输出&#xff0c;作为与用户交流的一种方式&#xff0c;以便从地图中获取信息、知识或见解。 在包括 QGIS 在内的任何 GIS 软件中制作地图布局都非常容易。 但另一方面&#xff0c;当我们必须生成如此大…

centos7上安装mysql8.0

1、检查一下自己电脑上安装了哪些mysql [rootlocalhost ~]# find / -name mysql 2、把安装的mysql全部删掉 [rootlocalhost ~]# rm -rf /usr/lib64/mysql/ [rootlocalhost ~]# rm -rf /usr/local/mysql/ [rootlocalhost ~]# rm -rf /etc/selinux/targeted/active/modules/100…

《Roller: Fast and Efficient Tensor Compilation for Deep Learning》

《Roller: Fast and Efficient Tensor Compilation for Deep Learning》 用于深度学习 快速高效的张量编译器 作者 微软亚洲研究院以及多伦多大学等多所高校 摘要 当前编译为了产生高效的kernel时&#xff0c;搜索空间大&#xff0c;通常使用机器学习的方法 找到最优的方案…

管理逻辑备数据库(Logical Standby Database)

1. SQL Apply架构概述 SQL Apply使用一组后台进程来应用来自主数据库的更改到逻辑备数据库。 在日志挖掘和应用处理中涉及到的不同的进程和它们的功能如下&#xff1a; 在日志挖掘过程中&#xff1a; 1&#xff09;READER进程从归档redo日志文件或备redo日志文件中读取redo记…

Apache Airflow Provider Sqoop 模块远程代码执行漏洞

漏洞描述 Apache Airflow 是一个以编程方式管理 workflow 的平台&#xff0c;Sqoop 模块用于在 Hadoop 和结构化数据存储&#xff08;例如关系数据库&#xff09;之间高效传输大量数据。 apache-airflow-providers-apache-sqoop 3.1.1 之前版本中&#xff0c;由于 SqoopHook …

【ONE·C || 自定义类型:结构体、段位、枚举、联合】

总言 C语言&#xff1a;自定义类型介绍。 文章目录总言1、结构体1.1、结构体声明1.1.1、基本声明方式1.1.2、特殊的声明&#xff1a;不完全声明1.2、结构体自引用1.2.1、结构体自引用说明1.2.2、typdef对结构体重命名1.3、结构体变量的定义和初始化1.4、结构体变量大小计算&…

VMware虚拟机安装Ubuntu(超详细图文教程)

VMware虚拟机安装Ubuntu&#xff08;超详细图文教程&#xff09; 1、Ubuntu下载 Ubuntu下载地址&#xff1a;点这里 注&#xff1a;但官网下载比较慢 也可关注公众号Time木回复&#xff1a; ubuntu22 获取 2、打开VMware VMware安装过程&#xff1a;待更新 2.1 创建新的虚…

5个面向开发人员的顶级报表工具

报表工具对有处理大量数据需求的公司至关重要。实际上&#xff0c;报表可以帮助公司实时访问公司资源&#xff0c;同时能够以可读和调整的格式分析和显示数据。本文为大家推荐五种成熟且强大的报表工具&#xff0c;重点介绍它们的功能和优势。 Stimulsoft Stimulsoft主要用于…

【安装教程】SSH远程连接工具-FinalShell的安装

&#x1f449;&#x1f449;&#x1f449;&#x1f449;&#x1f449;&#x1f449; 【目录在右侧哦~】省时间可以直接跳转到【安装步骤】 &#x1f449;&#x1f449;&#x1f449;&#x1f449;&#x1f449;&#x1f449;&#x1f449;一、软件介绍&#xff08;点我查看该软…

【python学习笔记】:环境搭建

Python 环境搭建 本章学习如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X。 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX,…

「TCG 规范解读」PC 平台相关规范(3)

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…

消息队列原理与实战-学习笔记

消息队列&#xff1a;保存消息的一个容器&#xff0c;本质是个队列&#xff0c;但是需要支持高吞吐、高并发、高可用。 1 前世今生 1.1 业界消息队列对比 Kafka:分布式的、分区的、多副本的日志提交服务&#xff0c;在高吞吐场景下发挥较为出色RocketMQ:低延迟、强一致、高性…

概率论与数理统计期末小题狂练 11-12两套,12-13-1

11-12第一学期A1 略。2 X服从正态分布N&#xff08;0&#xff0c;1&#xff09;&#xff0c;X^2服从卡方分布。又考查了卡方分布均值和方差公式。一开始如果对本题无从下手&#xff0c;大概是没看出来是什么分布。3 第二小空本身也可以作为一个结论。4 考查切比雪夫不等式&…

王道操作系统课代表 - 考研计算机 第三章 内存管理 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 “内存管理” 章节知识点总结的十分全面&#xff0c;涵括了《操作系统》课程里的全部…

装修的正确顺序是什么?

装修的正确顺序可以概括为以下几个步骤&#xff1a;1.设计阶段&#xff1a;根据你的需求和预算&#xff0c;设计师会提供多个方案供你选择&#xff0c;确定最终的设计方案。2.拆除阶段&#xff1a;清除室内所有旧的装修材料&#xff0c;包括地板、瓷砖、灯具、门窗等&#xff0…

Windows Server 2016搭建文件服务器

1&#xff1a;进入系统在服务器管理器仪表盘中添加角色和功能。 2&#xff1a;下一步。 3&#xff1a;继续下一步。 4&#xff1a;下一步。 5&#xff1a;勾选Web服务器(IIS) 6&#xff1a;添加功能。 7&#xff1a;下一步。 8&#xff1a;下一步。 9&#xff1a;下一步。 10&a…

视觉SLAM十四讲 ch3 (三维空间刚体运动)笔记

本讲目标 ●理解三维空间的刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角。 ●学握Eigen库的矩阵、几何模块使用方法。 旋转矩阵、变换矩阵 向量外积 向量外积&#xff08;又称叉积或向量积&#xff09;是一种重要的向量运算&#xff0c;它表示两个向量所形成的平行…

2023你还不会稳定性测试?这篇文章彻底讲透了

稳定性对产品的重要性不言而喻。 而作为质量保障&#xff0c;在稳定性测试方面的探索也在不断演化。记得两年前我们做稳定性测试还是基于恒定的压力&#xff0c;7*24小时长时间运行&#xff0c;关注的指标无非是吞吐量TPS的抖动、响应时间的变化趋势&#xff0c;以及各种资源是…

浅浅谈一谈B树和B+树

目录: &#x1f680;1.B树 &#x1f680;2.B树 索引背后的数据结构是啥呢,是B树,是为了数据库索引设计的,我们可以先了解B树,再说B树 1.什么是B树 B树也叫B-树,这里的-不读减,是一个符号 我们已经学过了二叉搜素树,B树其实就是N叉搜素树,二叉搜索树只能在每一个结点放一个…

HCIP-5OSPF基本原理及基本配置学习笔记

1、OSPF基本原理 开放式最短路径优先OSPF&#xff08;Open Shortest Path First&#xff09;协议是IETF定义的一种基于链路状态的内部网关路由协议。 RIP是一种基于距离矢量算法的路由协议&#xff0c;存在着收敛慢、易产生路由环路、可扩展性差等问题&#xff0c;目前已逐渐被…