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

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/ 上,我们可以看到以下选项,每个选项的含义如下:

  1. Project
    Project: 选择项目类型,可以是 Maven 项目或 Gradle 项目。
    Language: 选择项目使用的编程语言,如 Java、Kotlin 或 Groovy。
  2. Spring Boot
    Spring Boot: 选择要使用的 Spring Boot 版本。
    Project Metadata: 输入项目的元数据,包括 Group、Artifact、Name、Description、Package Name 和 Java 版本。
  3. Project Metadata
    Group: 项目的组织标识符。
    Artifact: 项目的唯一标识符。
    Name: 项目的名称。
    Description: 项目的描述。
    Package Name: 项目的包名。
    Packaging: 选择项目的打包方式,如 Jar 或 War。
    Java: 选择项目使用的 Java 版本。
  4. 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项目(保姆级教程)

在本文中&#xff0c;我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的&#xff0c;因为我发现有些java的初学者&#xff0c;甚至工作10年的老员工居然并不会新建一个SpringBoot项目&#xff0c;所以特别出了一篇文章来教大家新建一个SpringBoo…...

数据恢复篇:适用于 Android 视频恢复的 6 个工具

在智能手机这个动态的世界里&#xff0c;每一刻都被捕捉并以数字方式存储&#xff0c;丢失珍贵的视频可能是一种令人心碎的经历。不必担心&#xff0c;因为 Android 生态系统提供了大量旨在挽救这些珍贵回忆的视频恢复应用程序。 这些应用程序是强大的工具&#xff0c;旨在挽救…...

Android笔试面试题AI答之控件Views(6)

答案来着文心一言&#xff0c;仅供参考 目录 1.简述什么是RemoteViews?使用场景有哪些?RemoteViews的特性使用场景总结 2.获取View宽高的几种方法?1. 在onWindowFocusChanged方法中获取2. 使用ViewTreeObserver.OnGlobalLayoutListener3. 使用ViewTreeObserver.OnPreDrawLi…...

扭蛋机潮玩小程序搭建,扭蛋机行业的创新

在当下潮玩市场中&#xff0c;扭蛋机具有盲盒的未知性和惊喜体验感&#xff0c;商品丰富&#xff0c;并且价格相对低廉&#xff0c;获得了极高的人气。年轻人开始对扭蛋机逐渐“上头”&#xff0c;为了扭到喜欢的商品不断地进行复购下单&#xff0c;在这场随机性的扭蛋游戏中&a…...

supOS赋能千行百业

推进制造业数字化转型是促进数字经济和实体经济深度融合的重点领域。在长期摸索和实践过程中&#xff0c;蓝卓打造了工厂操作系统、行业云操作系统、产业大脑操作系统三大产品&#xff0c;形成了企业侧、行业侧、产业侧的立体化赋能体系&#xff0c;全面赋能工业企业&#xff0…...

Vue中filter的使用

在 Vue.js 中&#xff0c;filter() 方法用于创建一个新数组&#xff0c;其中包含通过所提供函数实现的测试的所有元素。filter() 不会改变原数组&#xff0c;而是返回一个新的数组。 语法 array.filter(callback(element[, index[, array]])[, thisArg])callback&#xff1a;…...

案例研究|柯尼卡美能达软件开发(大连)有限公司基于DataEase构筑内部数据可视化体系

柯尼卡美能达软件开发&#xff08;大连&#xff09;有限公司于2007年5月25日注册成立。公司以“洞悉在工作的人们真实情况&#xff0c;探寻他们的愿望&#xff0c;持续提供使人们更加幸福的服务”为使命&#xff0c;致力于系统品质测试服务、软件开发服务、IT安全服务、高级BPO…...

PHP框架详解- symfony框架

文心一言 Symfony框架是一个用PHP语言编写的开放源代码的Web应用框架&#xff0c;旨在加速Web应用程序的开发过程&#xff0c;提高代码的可维护性和可扩展性。以下是对Symfony框架的详细解析&#xff1a; 一、框架概述 起源与开发者&#xff1a; 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是一种常见的红外接收模块&#xff0c;用于接收和解码红外遥控器发送的红外信号。 HX1838具有以下特点和功能&#…...

数据结构--二叉树详解

一&#xff0c;概念 1&#xff0c;结点的度&#xff1a;一个结点含有子树的个数称为该结点的度 2&#xff0c; 树的度&#xff1a;一棵树中&#xff0c;所有结点度的最大值称为树的度&#xff1b; 3&#xff0c;叶子结点或终端结点&#xff1a;度为0的结点称为叶结点&#x…...

最短路径 | 743. 网络延迟时间之 Dijkstra 算法和 Floyd 算法

目录 1 基于 Dijkstra 算法1.1 代码说明1.2 完整代码 2 基于 Floyd 算法2.1 代码说明2.2 完整代码 前言&#xff1a;我在做「399. 除法求值」时&#xff0c;看到了基于 Floyd 算法的解决方案&#xff0c;突然想起来自己还没有做过最短路径相关的题。因此找来了「743. 网络…...

LLM模型与实践之基于 MindSpore 实现 BERT 对话情绪识别

安装环境 # 该案例在 mindnlp 0.3.1 版本完成适配&#xff0c;如果发现案例跑不通&#xff0c;可以指定mindnlp版本&#xff0c;执行!pip install mindnlp0.3.1 !pip install mindnlp 模型简介 BERT是一种由Google于2018年发布的新型语言模型&#xff0c;它是基于Transforme…...

单例模式学习cpp

现在我们要求定义一个表示总统的类型。presented可以从该类型继承出French present和American present的等类型。这些派生类型都只能产生一个实例 为了设计一个表示总统的类型&#xff0c;并从该类型派生出只能产生一个实例的具体总统&#xff08;如法国总统和美国总统&#x…...

第5讲:Sysmac Studio中的硬件拓扑

Sysmac Studio软件概述 一、创建项目 在打开的软件中选择新建工程 然后在工程属性中输入工程名称,作者,类型选择“标准工程”即可。 在选择设备处,类型选择“控制器”。 在版本处,可以在NJ控制器的硬件右侧标签处找到这样一个版本号。 我们今天用到的是1.40,所以在软…...

使用GoAccess进行Web日志可视化

运行网站的挑战之一是了解您的 Web 服务器正在做什么。虽然各种监控应用程序可以在您的服务器以高负载或页面响应缓慢运行时提醒您&#xff0c;但要完全了解正在发生的事情&#xff0c;唯一的方法是查看 Web 日志。阅读日志数据页面并了解正在发生的事情可能需要花费大量时间。…...

GD 32 流水灯

前言&#xff1a; 通过后面的学习掌握了一些逻辑架构的知识&#xff0c;通过复习的方式将学到的裸机任务架构的知识运用起来&#xff0c;同时巩固前面学到的知识&#xff0c;GPIO的配置等。 开发板上LED引脚使用示意图 注&#xff1a;此次LED灯的点亮凡是是高电平点亮&#xff…...

数据结构之栈详解

1. 栈的概念以及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈…...

算法:BFS解决 FloodFill 算法

目录 FloodFill 算法 题目一&#xff1a;图像渲染 题目二&#xff1a;岛屿数量 题目三&#xff1a;岛屿的最大面积 题目四&#xff1a;被围绕的区域 FloodFill 算法 在递归搜索回溯中已经说到过 FloodFill 算法了&#xff0c;但是那里是用 dfs 解决的&#xff0c;这里会使…...

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

以太网(Ethernet)

目录 1. What is Internet?1.1. What is Ethernet?2. TCP/IP3. Physical Layer(PHY)4. Data Link Layer4.1. MAC Sublayer5. Network Layer5.1. IP5.2. ARP6. Transport Layer6.1. UDP6.2. TCP7. Application LayerFPGA实现以太网(一)——以太网简介 网络与路由交换 菜鸟FP…...

Scrcpy adb server version (41) doesn‘t match this client (39); killing...

通过Snap 在Ubuntu上安装 scrcpy之后&#xff0c;启动会导致无法同时 scrcpy和adb logcat 过滤日志 目前最新的安装的platforms-tools下面的adb 版本最新都是 adb 41版本 解决办法&#xff1a; 在这里链接里面 下载 adb 1.0.39 版本&#xff0c;替换 /home/host/Android/Sdk/…...

微服务实战系列之玩转Docker(四)

前言 幸福&#xff0c;就是继续追寻已经拥有的东西。 ——圣奥古斯丁 什么算已经拥有的&#xff1f;比如爱你的人在等你&#xff0c;比如每日热腾腾的三餐&#xff0c;比如身边可爱的同事&#xff0c;又比如此刻的你&#xff0c;看见了这篇博文&#xff08;&#x1f601;&#…...

微信小程序-自定义组件生命周期

一.created 组件实例创建完毕调用。定义在lifetimes对象里。 不能在方法里面更改data对象里面的值&#xff0c;但是可以定义属性值。 lifetimes:{//不能给data设置值created(){this.testaaconsole.log("created") }}二. attached 模板解析完成挂载到页面。 可以更…...

2024年7月23日(samba DNS)

​ 回顾 1、关闭防火墙&#xff0c;关闭selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 2、修改静态IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改uuid的目的是为了保证网络的唯一性 3、重启网络服务 systemctl restart netwo…...

Hyperledger顶级项目特点和介绍

Hyperledger的顶级项目 Hyperledger是Linux基金会主持的开源区块链项目&#xff0c;其目的是推动跨行业的区块链技术的开发和应用。以下是Hyperledger的顶级项目&#xff1a; 1. Hyperledger Fabric 描述&#xff1a;Hyperledger Fabric是一个可扩展的企业级区块链平台&…...

操作系统——笔记(1)

操作系统是管理计算机硬件资源&#xff0c;控制其他程序运行并为用户提供交互操作界面的系统软件的集合&#xff0c;控制和管理着整个计算机系统的硬件和软件资源&#xff0c;是最基本的系统软件。 常见的操作系统&#xff1a;ios、windows、Linux。 计算机系统的结构层次&am…...

isEmpty() 和 isBlank()的区别

isEmpty() 和 isBlank()的区别 平时自己开发的时候没有注意到这个地方,直到实习的时候代码审查的时候发现其用法上两者的不同. isEmpty() public static boolean isEmpty(String str) {return str null || str.length() 0; }isBlank() public static boolean isBlank(Strin…...

scrapy生成爬虫数据为excel

scrapy生成爬虫数据为excel 使用openpyxl&#xff08;推荐&#xff09;安装openpyxl库建一个新的Item Pipeline类在settings.py中启用ExcelPipeline说明 使用scrapy-xlsx首先&#xff0c;安装scrapy-xlsx&#xff1a;然后在Scrapy爬虫中使用管道&#xff1a;说明 要使用Scrapy生…...

vscode debug C++无法输入问题

研究了半天vscode debug c无法输入的问题&#xff0c;原来vscode的文档里面已经记录了。issue都是2020年提的了&#xff0c;还没解决。。。 不过人家也确实给了一个解法&#xff1a;用外部的terminal。 不过怎么看都还不是很方便&#xff0c;所以还是推荐直接使用CodeLLDB插件来…...