SpringBoot入门:如何新建SpringBoot项目(保姆级教程)
在本文中,我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的,因为我发现有些java的初学者,甚至工作10年的老员工居然并不会新建一个SpringBoot项目,所以特别出了一篇文章来教大家新建一个SpringBoot项目。
什么是SpringBoot项目?
Spring Boot 是一个用于简化 Spring 应用程序开发的框架,它提供了快速构建、开箱即用的特性,使得开发人员可以更快速地搭建和部署应用程序。现在很多企业都用的是SpringBoot项目,但是在工作过程中,一般都是领导已经搭建好了,但是作为Java初学者的我们,也需要知道如何新建一个SpringBoot项目
你需要准备的东西:
一套安装好的Java环境:Windows安装Java环境(OracleJDK)
一套安装好的Maven:Windows安装Maven(图文解说详细版)
一个安装好的GIT
一套安装好的IDEA
第一种方式:通过脚手架网站新建
目前比较好用的网站有:
阿里云的项目初始化平台,提供了更多与阿里云相关的功能和服务:start.aliyun.com
spring官方的初始化平台,提供了Spring项目的初始化配置,包括Gradle和Maven项目的生成:start.spring.io
start.spring.io
这个网站进来是这样的
在 https://start.spring.io/ 上,我们可以看到以下选项,每个选项的含义如下:
- Project
Project: 选择项目类型,可以是 Maven 项目或 Gradle 项目。
Language: 选择项目使用的编程语言,如 Java、Kotlin 或 Groovy。 - Spring Boot
Spring Boot: 选择要使用的 Spring Boot 版本。
Project Metadata: 输入项目的元数据,包括 Group、Artifact、Name、Description、Package Name 和 Java 版本。 - Project Metadata
Group: 项目的组织标识符。
Artifact: 项目的唯一标识符。
Name: 项目的名称。
Description: 项目的描述。
Package Name: 项目的包名。
Packaging: 选择项目的打包方式,如 Jar 或 War。
Java: 选择项目使用的 Java 版本。 - Dependencies
Dependencies: 选择要添加到项目中的依赖项,如 Spring Web、Spring Data JPA、Spring Security 等。
Search for dependencies: 搜索要添加的依赖项
这里要注意的是java版本最低只能选择17的版本了,因为在2022年第四季度发布的Spring6框架,要求Java最低版本为JDK17,
而 spring 6 将会重构内部架构,同时把最低java版本要求改为17,另外 spring boot 3 也将要求最低 java 版本为 17
所以这里看到的SpringBoot最低版本也是3开头的版本号了,其实这也是spring官方为了推动SpringBoot的良苦用心(极不方便)。
这里博主给大家配置好了一个默认的web环境加mysql能使用的configuration:
web环境加mysql
最下面有两个选项,一个是预览文件
一个是导出为压缩文件
下载完成后我们解压,导入到idea中即可(用idea打开)
打开之后我们选择pom文件单击右键选择添加为maven项目即可
如果我们安装了maven的话,可以只留下src目录和pom.xml文件即可,其他的全部可以删掉
start.aliyun.com
那如果我们非要使用java8版本或者11版本呢?上面的网站就已经使用不了了,这个时候我们进入阿里云的应用脚手架,这个网站进来是这样的
这个里面和上面的内容几乎是一比一复刻的,所以大家按照上面的来就行
这里也给大家选择好了一个web加mysql的configuration:
configuration
大家下载下来直接运行启动类即可,控制台出现如下信息则代表运行成功:
第二种方式:用IDEA新建
在IDEA的新建项目中选择Spring lnitializr
在ideal中也是集成了上面两个网站的创建方式。他相当于把上面脚手架网站的页面给搬入到ideal中来。例如我们这个选择spring官方的脚手架spring boot的网站。我们就会发现里面的内容和刚刚我们第一种方式spring官方网站里面的内容是一模一样的。在这个里面呢,我们也可以选择自己的网站,例如我们也可以选择阿里巴巴的springboot脚手架启动网站。
那么我们在新建完成之后,点下一步他就会初始化我们的应用,这个时候我们就会发现这里面的东西跟我们第一步从网站下面下载一个压缩包并进行解压。然后用idea打开这个里面的内容其实是一样的。
第三种方式:设置parent为SpringBoot
除了上面两种方式呢,我们也可以通过设置maven 的Parent 为spring boot。来设置这个项目为spring boot的项目。其实spring boot它的本质也是一个main。那么我们新建一个空的maven项目,我们再把spring boot的包给引进来。那么其实他也就是一个资源部的项目了。
第一步:新建一个maven项目
当我们新建了一个maven项目的时候,我们就会发现项目的目录结构是这样的,它里面什么东西都没有。
第二步:设置parent
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/> <!-- lookup parent from repository --></parent>
第三步,引入一个starter
根据你的项目需求来引入一个starter,因为我们的项目是外部项目,那么我们就引入这个starter。
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
这里值得注意的是我们随便引入一个starter即可,例如博主自己开发的jar包:
<dependency>--><groupId>io.gitee.wangfugui-ma</groupId>--><artifactId>aliyun-oss-spring-boot-starter</artifactId>--><version>1.0.0</version>--></dependency>-->
它里面的原理是我们引入的jar包它里面引入了spring boot的jar包,所以相当于我们的项目也引入了spring boot的jar包。
第四步,编写启动类
package com.masiyi;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @Author:掉头发的王富贵* @Package:com.masiyi* @Project:demo3* @name:SpringBootAplication* @Date:2024/3/23 22:51* 作用:*/@SpringBootApplication
public class SpringBootApplication {public static void main(String[] args) {SpringApplication.run(SpringBootApplication.class, args);}
}
这个时候只需要把你的类名根据博主发的模板。为自己的启动类的类名。例如你的叫TestApplication,那么这个启动类就应该长这样
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @Author:掉头发的王富贵* @Package:com.masiyi* @Project:demo3* @name:SpringBootAplication* @Date:2024/3/23 22:51* 作用:*/@SpringBootApplication
public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}
}
第四种方式,直接引入springBoot
第一种:直接添加spring-boot-starter
这个和第三种方式的有一个区别,就是我们没有通过parent。去引入boot,而是我们直接把的架包引入到我们的系统当中。我们只要引入了以下的jar包,我们的系统就变成一个springboot项目了。
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.7.12</version></dependency></dependencies>
第二种:设置spring-boot-dependencies
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.12</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
还有另外一种变形的方式就是我们可以在dependencyManagement中设置spring-boot-dependencies,这样也是可以的
我们已经通过了四种方式设置我们的项目为SpringBoot的项目。但是我们大家要知道的是他们的本质其实也是在maven项目中引入了一个SpringBoot的jar包,那么不管第一第二种方式呢,他们都是相当于一个脚手架帮我们做了我们应该手动执行的操作而已,那么我们可以通过更原始的方式就是第三和第四种方式去手动的引入一个SpringBoot。希望通过这篇教程JAVA的初学者应该了解到怎么去创建一个spring boot的项目。谢谢大家的观看。
相关文章:
SpringBoot入门:如何新建SpringBoot项目(保姆级教程)
在本文中,我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的,因为我发现有些java的初学者,甚至工作10年的老员工居然并不会新建一个SpringBoot项目,所以特别出了一篇文章来教大家新建一个SpringBoo…...
数据恢复篇:适用于 Android 视频恢复的 6 个工具
在智能手机这个动态的世界里,每一刻都被捕捉并以数字方式存储,丢失珍贵的视频可能是一种令人心碎的经历。不必担心,因为 Android 生态系统提供了大量旨在挽救这些珍贵回忆的视频恢复应用程序。 这些应用程序是强大的工具,旨在挽救…...
Android笔试面试题AI答之控件Views(6)
答案来着文心一言,仅供参考 目录 1.简述什么是RemoteViews?使用场景有哪些?RemoteViews的特性使用场景总结 2.获取View宽高的几种方法?1. 在onWindowFocusChanged方法中获取2. 使用ViewTreeObserver.OnGlobalLayoutListener3. 使用ViewTreeObserver.OnPreDrawLi…...
扭蛋机潮玩小程序搭建,扭蛋机行业的创新
在当下潮玩市场中,扭蛋机具有盲盒的未知性和惊喜体验感,商品丰富,并且价格相对低廉,获得了极高的人气。年轻人开始对扭蛋机逐渐“上头”,为了扭到喜欢的商品不断地进行复购下单,在这场随机性的扭蛋游戏中&a…...
supOS赋能千行百业
推进制造业数字化转型是促进数字经济和实体经济深度融合的重点领域。在长期摸索和实践过程中,蓝卓打造了工厂操作系统、行业云操作系统、产业大脑操作系统三大产品,形成了企业侧、行业侧、产业侧的立体化赋能体系,全面赋能工业企业࿰…...
Vue中filter的使用
在 Vue.js 中,filter() 方法用于创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。filter() 不会改变原数组,而是返回一个新的数组。 语法 array.filter(callback(element[, index[, array]])[, thisArg])callback:…...
案例研究|柯尼卡美能达软件开发(大连)有限公司基于DataEase构筑内部数据可视化体系
柯尼卡美能达软件开发(大连)有限公司于2007年5月25日注册成立。公司以“洞悉在工作的人们真实情况,探寻他们的愿望,持续提供使人们更加幸福的服务”为使命,致力于系统品质测试服务、软件开发服务、IT安全服务、高级BPO…...
PHP框架详解- symfony框架
文心一言 Symfony框架是一个用PHP语言编写的开放源代码的Web应用框架,旨在加速Web应用程序的开发过程,提高代码的可维护性和可扩展性。以下是对Symfony框架的详细解析: 一、框架概述 起源与开发者: Symfony由SensioLabs&#…...
springboot系列十一:Thymeleaf
文章目录 官方文档基本介绍Thymeleaf机制说明Thymeleaf语法表达式运算符th属性迭代条件运算使用Thymeleaf th属性需要注意点 Thymeleaf综合案例需求说明思路分析代码实现 作业布置 官方文档 在线文档: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 离线…...
51单片机嵌入式开发:12、STC89C52RC 红外解码数码管显示
STC89C52RC 红外解码数码管显示 1 概述2 HX1838原理2.1 原理概述2.2 原理概述 3 HX1838代码实现3.1 工程整理3.2 工程代码3.3 演示 4 HX1838总结 1 概述 HX1838是一种常见的红外接收模块,用于接收和解码红外遥控器发送的红外信号。 HX1838具有以下特点和功能&#…...
数据结构--二叉树详解
一,概念 1,结点的度:一个结点含有子树的个数称为该结点的度 2, 树的度:一棵树中,所有结点度的最大值称为树的度; 3,叶子结点或终端结点:度为0的结点称为叶结点&#x…...
最短路径 | 743. 网络延迟时间之 Dijkstra 算法和 Floyd 算法
目录 1 基于 Dijkstra 算法1.1 代码说明1.2 完整代码 2 基于 Floyd 算法2.1 代码说明2.2 完整代码 前言:我在做「399. 除法求值」时,看到了基于 Floyd 算法的解决方案,突然想起来自己还没有做过最短路径相关的题。因此找来了「743. 网络…...
LLM模型与实践之基于 MindSpore 实现 BERT 对话情绪识别
安装环境 # 该案例在 mindnlp 0.3.1 版本完成适配,如果发现案例跑不通,可以指定mindnlp版本,执行!pip install mindnlp0.3.1 !pip install mindnlp 模型简介 BERT是一种由Google于2018年发布的新型语言模型,它是基于Transforme…...
单例模式学习cpp
现在我们要求定义一个表示总统的类型。presented可以从该类型继承出French present和American present的等类型。这些派生类型都只能产生一个实例 为了设计一个表示总统的类型,并从该类型派生出只能产生一个实例的具体总统(如法国总统和美国总统&#x…...
第5讲:Sysmac Studio中的硬件拓扑
Sysmac Studio软件概述 一、创建项目 在打开的软件中选择新建工程 然后在工程属性中输入工程名称,作者,类型选择“标准工程”即可。 在选择设备处,类型选择“控制器”。 在版本处,可以在NJ控制器的硬件右侧标签处找到这样一个版本号。 我们今天用到的是1.40,所以在软…...
使用GoAccess进行Web日志可视化
运行网站的挑战之一是了解您的 Web 服务器正在做什么。虽然各种监控应用程序可以在您的服务器以高负载或页面响应缓慢运行时提醒您,但要完全了解正在发生的事情,唯一的方法是查看 Web 日志。阅读日志数据页面并了解正在发生的事情可能需要花费大量时间。…...
GD 32 流水灯
前言: 通过后面的学习掌握了一些逻辑架构的知识,通过复习的方式将学到的裸机任务架构的知识运用起来,同时巩固前面学到的知识,GPIO的配置等。 开发板上LED引脚使用示意图 注:此次LED灯的点亮凡是是高电平点亮ÿ…...
数据结构之栈详解
1. 栈的概念以及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈…...
算法:BFS解决 FloodFill 算法
目录 FloodFill 算法 题目一:图像渲染 题目二:岛屿数量 题目三:岛屿的最大面积 题目四:被围绕的区域 FloodFill 算法 在递归搜索回溯中已经说到过 FloodFill 算法了,但是那里是用 dfs 解决的,这里会使…...
Python 中文双引号 “”
Python 中文双引号 “” 1. SyntaxError: invalid character in identifier2. CorrectionReferences 1. SyntaxError: invalid character in identifier print(Albert Einstein once said, “A person who never made a mistake never tried anything new.”) print(Albert Ei…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...


















