SpringBoot概述及项目的创建使用

news2025/5/21 2:06:13

文章目录

  • 一. Spring Boot概述
    • 1. 什么是Spring Boot?
    • 2. Spring Boot的优点
  • 二. Spring Boot项目的创建
    • 1. 使用IDEA创建
      • 1.1. 准备工作
      • 1.2. 创建运行Spring Boot项目
      • 1.3. 进行Web交互
      • 1.4. 目录工程介绍
      • 1.5. 项目快速添加依赖
      • 1.6. 防止配置文件乱码所需的配置
      • 1.7. SpringBoot热部署
    • 2. 使用网页创建SpringBoot项目

一. Spring Boot概述

1. 什么是Spring Boot?

Spring 是为了简化 Java 程序开发而诞生的,而 Spring Boot 是为了简化 Spring 项目的开发而诞生的。

Spring Boot 直接翻译过来就是 Spring 脚手架的意思,平时我们我们也能常见到在建造房屋等建筑时脚手架这种工具是很常见的,建筑行业的脚⼿架的作用是砌筑砖墙,浇筑混凝⼟,⽅便墙⾯抹灰,装饰和粉刷的,也就是说使用脚手架可以提高建房的效率。

img

而我们这里也一样,Spring 脚手架,它就能够提高开发 Spring 项目的效率。

2. Spring Boot的优点

  • 快速集成框架,Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架。
  • 内置运行容器,无需配置 Tomcat 等 Web 容器,直接运行和部署程序。
  • 快速部署项目,无需外部容器即可启动并运行项目。
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发。
  • 支持更多的监控的指标,可以更好的了解项目的运行情况。

二. Spring Boot项目的创建

1. 使用IDEA创建

1.1. 准备工作

首先看你的 IDEA 是社区版还是专业版,专业版是无需额外安转插件的,直接创建 SpringBoot 项目即可。

而社区版 IDEA 中没有内置 Spring Boot 项目创建的插件,此时就需要下载第三方插件Spring Boot Helper来创建Spring Boot项目。

插件安装步骤:
1️⃣第一步,从IDEA找到Setting设置。
img
2️⃣第二步,找到插件选项,搜索安装后重新启动 IDEA 即可。
img
对于专业版的 IDEA,本身内置的插件这个插件了,社区版安装好插件后和专业版就大同小异了,看下面的介绍,以社区版为例。

1.2. 创建运行Spring Boot项目

1️⃣第一步,新建项目,选择你常用的 jdk 版本,现在稳定的有 8,11,17 三个版本,我这里用的是 jdk1.8。
img
2️⃣第二步,选择 Java 版本(一定要选择本地存在的 jdk 版本)和项目类型,然后next。
img

3️⃣第三步,选择 Spring Boot 版本,要注意使用 jdk1.8 的话只能选择 版本为2.x.x的,后面没有字母的是稳定版。
img

4️⃣第四步,添加需要的依赖,看选项选择即可,然后 next。

img
img
5️⃣第五步,设置项目名称与路径,设置好后点击 Finish 即可。
img

6️⃣第六步,添加 Maven 工具,社区版打开项目后,右侧没有 Maven 需要我们手动添加,这是因为社区版 IDEA 不能识别该项目为 Maven 项目,专业版没有这个问题。

img

img

要注意 IDEA 社区版是有一些 Bug 的,在 pom.xml 文件中,我们要选择的 springboot 版本是2.7.14,但它加的是2.7.14.RELEASE,我们把后面的RELEASE删除即可,专业版是没有这个问题的。

img
7️⃣第七步,刷新等待项目加载完成,直到 SpringBoot 项目的启动类DemoApplication图标变蓝为止。

imgimg

第一次加载时间可能有点久,如果加载失败,先看 Maven 配置的是不是国内源,试着重新加载几次,实在不行,再将 SpringBoot 的源成换国内的阿里源试一试。
img
所谓启动类就是带有@SpringBootApplication注解的那个类。
img
点击运行按钮,显示下图中的结果就表示 SpringBoot 项目创建成功了。
img

8️⃣第八步,创建完 SpringBoot 项目之后我们还可以删除一些没有用的目录,不影响使用。

img

1.3. 进行Web交互

我们写一个程序,当浏览器访问路径时,在网页上输出网页上显示Hello,SpringBoot!,如果能够成功显示到浏览器的话才表示我们创建项目创建完全没有问题。

要注意在 SpringBoot 项目中,我们创建的类必须在启动类同级目录或者子级目录下,这样才能被被框架识别扫描到,因为在 Spring Boot 项目中是不需要配置扫描路径的,只需要将类创建在指定目录下即可,这也是 SpringBoot 项目的一个特点,约定大于配置(相较于 Spring 配置较少,在 Spring 中需要配置 Bean 的扫描路径的,而 Spring Boot 中不需要,放到约定的路径下即可)。

package com.example.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @ResponseBody   // 不加默认返回一个页面, 这是历史问题, 返回一个非静态页面数据,可以加到类上也可以加到方法上
    @RequestMapping("/hello")
    public static String sayHi() {
        return "Hello, SpringBoot!";
    }
}

启动程序。

img
🍂访问结果:
img

我们再尝试将TestController移动到非启动类目录下,重新运行程序,访问路径。

img

🍂访问结果:

此时我们访问时,就报 404 了,这就说明此时 Spring Boot 项⽬没有将 TestController 对象注⼊到容器中。
img

1.4. 目录工程介绍

Spring Boot 项⽬有两个主要的⽬录:

①src/main/java 为 Java 源代码。

②src/main/resources 为静态资源或配置⽂件:

  • /static:静态资源⽂件夹;
  • /templates:模版资源⽂件夹。

img

1.5. 项目快速添加依赖

1️⃣第一步,我们需要一个插件EditStarters,在 IDEA 插件设置中,下载安装,然后重启IDEA。
img

2️⃣第二步,找到pom.xml文件,右键选择Generate
img
3️⃣第三步,选择刚刚下载的插件那个选项。
img
4️⃣第四步,设置数据源,用默认就行。
img
5️⃣第五步,添加/修改依赖。
img

1.6. 防止配置文件乱码所需的配置

打开Setting,找到如下图所在目录,将所有的编码格式改为utf8
img

上面这一步只是设置了当前项目,我们还需要针对新项目做出同样的设置。
img
设置改好之后,需要删除配置文件重新创建,就不会出现乱码了。

1.7. SpringBoot热部署

1️⃣第一步,在pom.xml中添加spring-boot-devtools依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

2️⃣第二步,打开Setting,开启项目自动编译。

img

3️⃣第三步,在Setting中开启项目运行中进行热部署(其实就是自动重启 IDEA)。

img

4️⃣第四步,再针对新项目完成上面第二步设置即可,之所以不设置第三步是因为Advanced Settings选项只有在File->Settings里面才有,只能在当前项目设置,而在File->New Projects Setup->Settings for New Projects这个设置页面里是没有的,所以需要我们在新项目中自己手动再去设置。
img

2. 使用网页创建SpringBoot项目

1️⃣第一步,打开SpringBoot项目创建网站:https://start.spring.io/

img
2️⃣第二步,配置项目,按照下图配置即可,与在IDEA创建及其类似。
img
3️⃣第三步,选择必要的依赖。
img

img
4️⃣第四步,点击创建按钮(点击一次即可,不然会下载多个 SpringBoot 的zip包)。
img
然后就会生成一个压缩包,自动下载到本地。
img
5️⃣第五步,解压后通过 IDEA 打开即可。
img

此时项目也是可以运行的。
img

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

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

相关文章

电商订单履约-卖家发货演化史

1 背景 订单的履约之路就是从发货开始&#xff0c;看似简单的发货功能&#xff0c;其背后却藏着许多的小秘密。 发货的业务特点&#xff1a; B端业务&#xff0c;性能要求不高&#xff0c;因为存在批量发货的场景。 发货时间比较分散&#xff0c;所以并发量不大。 业务复杂…

Studio One6.2Pro最新中文版Win+Mac新功能与BUG修复

无论你是第一次接触数字音乐工作站&#xff08;DAW&#xff09;&#xff0c;还是第一次尝试 制作属于自己的音乐&#xff0c;Studio One 都能给你非凡的体验&#xff01;如果您是一名音乐制作人&#xff0c;您是否曾经为了寻找一个合适的音频工作站而苦恼过&#xff1f;Studio …

力扣:64. 最小路径和(Python3)

题目&#xff1a; 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a…

例行性工作

上述方法关机就没了&#xff0c;开机需要再次挂载&#xff0c;我们可以设置开机自动挂载&#xff1a; 方法一&#xff1a; 方法二&#xff1a; 一、单一执行的例行性工作 1、at命令的工作过程 默认有黑名单&#xff0c;黑名单里面没有人&#xff0c;没有allow&#xff0c;表示…

Appium Desktop安装

【提示&#xff1a;官方已不再维护&#xff0c;建议命令行方式安装&#xff0c;但可以学习了解一下】 Appium Desktop是一款适用于Mac、Windows和Linux的应用程序&#xff0c;它以漂亮灵活的UI为您提供Appium自动化服务器的强大功能。它基本上是Appium Server的图形界面。您可…

【数据分享】2006-2021年我国城市级别的各类建设用地面积数据 (工业用地/居住用地等十几个指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标&#xff08;可查看之前的文章获悉&#xff09;。…

[oneAPI] 手写数字识别-卷积

[oneAPI] 手写数字识别 手写数字识别参数与包加载数据模型训练过程结果 oneAPI 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolkitSam…

MySQL 中 不等于 会过滤掉 Null 的问题

null值与任意值比较时都为fasle not in 、"!"、"not like"条件过滤都会过滤掉null值的数据 SELECT * from temp; SELECT * from temp where score not in (70); 返回null解决方法: SELECT * from temp where score not in (70) or score is null;SELECT…

python自动化办公的一些小工具,函数组件

上一篇文章写了怎么自动化写一个月报&#xff0c;其中有很多很好用的函数组件&#xff0c;都被我封装为了函数&#xff0c;功能很好用。下面一一介绍&#xff1a; 1.添加汇总函数 输入一个pandas的数据框&#xff0c;就会返回一个加了汇总行的数据框。 def add_summary_row(d…

利用HTTP代理实现请求路由

嘿&#xff0c;大家好&#xff01;作为一名专业的爬虫程序员&#xff0c;我知道构建一个高效的分布式爬虫系统是一个相当复杂的任务。在这个过程中&#xff0c;实现请求的路由是非常关键的。今天&#xff0c;我将和大家分享一些关于如何利用HTTP代理实现请求路由的实用技巧&…

BUUCTF [MRCTF2020]Ezpop解题思路

题目代码 Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95 //And Crack It! class Modifier {protected $var;publi…

Vue3 —— computed 计算属性及源码学习

该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>&#xff0c;且包含 typescript 的基础用法 前言 本篇文章主要学习 computed 的 基本使用方式、简单购物车实战、源码理解 一、基本使用 computed 支持两种定义方式&#xff1a;选项式、函数式 1、选…

《安富莱嵌入式周报》第320期:键盘敲击声解码, 军工级boot设计,开源CNC运动控制器,C语言设计笔记,开源GPS车辆跟踪器,一键生成RTOS任务链表

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1Cr4y1d7Mp/ 《安富莱嵌入式周报》第320期&#xff1a;键盘敲击…

HASH索引,AVL树,B树,B+树的区别?

1. 什么是 Hash 1.1 Hash 函数 Hash 本身其实是一个函数&#xff0c;又被称为散列函数&#xff0c;它可以大幅提高我们对数据的检索效率。因为它是散列的&#xff0c;所以在存储数据的时候&#xff0c;它也是无序的。 Hash 算法是通过某种确定性的算法(例如MD5&#xff0c;S…

恢复删除的文件,3个宝藏恢复方法分享!

在对电脑的操作过程中误删了文件怎么办&#xff1f;删除的文件还可以恢复吗&#xff1f;快救救孩子吧&#xff01;一大堆重要文件被不小心删除了&#xff0c;真的很无助啊&#xff01;” 在电脑逐渐成为人们工作和生活不可缺少的工具时&#xff0c;存储和删除文件也变得更为方便…

自动化安装系统(二)

利用PXE实现自动化安装 PXE简介 PXE&#xff1a;Preboot Excution Environment&#xff0c;预启动执行环境&#xff0c;是由Intel公司研发&#xff0c;基于Client/Server的网络模式&#xff0c;支持远程主机通过网络从远端服务器下载映像&#xff0c;并由此支持通过网络启动操…

iOS textView支持超链接跳转

将某些文字变成高量可以点击的超链接核心功能代码 attri.addAttribute(NSAttributedString.Key.link, value:NSURL.init(string: "dctt:p/userPrivacy.html")!, range: NSRange.init(location: s.count - 4, length: 4) )textView.linkTextAttributes [NSAttributed…

解密 AI 客服;在不同硬件设备上运行大型语言模型的可能性

&#x1f989; AI新闻 &#x1f680; 微软必应首席执行官称必应聊天优于OpenAI的GPT-4&#xff0c;但成本更高 摘要&#xff1a;微软必应的首席执行官米哈伊尔・帕拉欣表示&#xff0c;必应聊天表现优于OpenAI的GPT-4&#xff0c;但使用了更高成本的检索增强推理技术。必应聊…

C语言的使用技巧--在IO操作中的移位和快速配置

在WB32F103&#xff08;ARM cortex m3内核&#xff0c;96Mhz&#xff09;的gpio初始化中有一段代码&#xff0c;充分的结合了硬件特征并使用C语言的技巧来快速的配置对应的GPIO的功能&#xff0c;堪称经典和楷模&#xff0c;代码异常简洁&#xff0c;执行速度快&#xff0c;配置…

【Qt6】QWindow类可以做什么

原来的水文标题是“用 VS Code 搞 Qt6”&#xff0c;想想还是直接改为“Qt6”&#xff0c;反正这个用不用 VS Code 也能搞。虽然我知道大伙伴们都很讨厌 CMake&#xff0c;但毕竟这厮几乎成了 C 的玩家规范了。Qt 也算识大体&#xff0c;支持用 CMake 来构建程序。所以&#xf…