从零开始,手把手教你搭建Spring Boot后台工程并说明

2023-11-19


前言

最近这段时间在社交软件上,看到很多学生党求助,比如这个项目用到了什么框架,为啥这里飘红,那里报错之类的,原来是期末到了。懂得都懂,大学时候好多作业来路奇奇怪怪的,不足为奇,但不管怎样,学会才是最重要的,反正今天从0开始,给大家搭建一个springboot后台工程吧


一、JDK

一切的基础,至于版本的话,尽管现在到了23,但至今业界数量最多的仍然是jdk8,没什么好说的,我上传了个windows的jdk8安装版,可以直接解压后,点击安装:jdk8-windows版本下载

二、开发软件

目前对java开发来说,一般的开发软件无非是MyEclipse 和 Idea,MyEclipse 界面如下
在这里插入图片描述
而Idea如下:
在这里插入图片描述
两者都很常见。myEclipse 免费,适合初学者,我看很多学生用的也是这个。但就我目前来说,更习惯使用Idea,大部分从业者用的也是这个,Idea的社区版免费,专业版是收费的,其官网如下:IDEA下载

PS:如果你想用专业版,但又觉得贵,网上有很多方法或可以帮上你的忙。有此想法的,这边建议使用2021.2.2版本,考虑无限试用30天的思路,本文不再做宣传

三、项目管理

开发者必须明白,不可能所有的功能,都由开发者自己来写。很多功能市面上都已经有人写好且开源出来了,所以现在我们可以直接拿过来使用,包括spring等等框架也是一样的道理。所以一般项目中会引入许多包,包之间又会相互引用,如果不分析管理,很快就成一团乱麻了,所以管理软件是必须的,这里肯定还是推maven,包也给你们准备好了:maven3.6.3

1.maven安装

下载完,解压到任一目录下,如图
在这里插入图片描述
但是因为maven不是执行安装的,所以还需要手动弄一点环境配置,右键“此电脑”,选择属性
在这里插入图片描述
选择“高级系统设置”
在这里插入图片描述
打开后,点击环境变量
在这里插入图片描述

因为一般机器都是自己一个人在使用,所以直接配置系统级别的环境变量即可,点击系统变量里的
“Path”行,进行编辑,然后为其新建一个值,值自然就是我们上面的maven解压路径,注意要到这里的路径要写到\bin
在这里插入图片描述
点击“确定”后关闭。此时已经配置完毕了,接下来我们看看生效了没
键盘同时按住Windows + r,弹出运行界面。也可以右击“开始”,点击“运行”,弹出界面,输入cmd打开命令提示符

在这里插入图片描述
输入如下命令,即可查看安装的maven版本

mvn -version

在这里插入图片描述
如果出现上述提示,说明配置对了。如果出现什么命令不存在之类的,说明配置有问题

2.连接至仓库

maven安装成功只是第一步,到这里,你只是装了个软件,然而maven是要负责给你引入各种包的,所以其必须是联网,连接到公网仓库的。当然,由于内地访问外网普遍极慢,我们可以连接至阿里云的镜像仓库来使用。另外,我们本地也需要建个目录,来用作临时仓库

因此可以建个如下的目录, 其中setting.xml我也给你们准备好了,下载粘贴即可:Maven配置文件-setting.xml

在这里插入图片描述

3.开发软件配置

因为我们几乎不直接使用maven的命令,都是在开发软件,如上面的IDEA里,使用可视化的按钮操作,所以需要为开发软件配置下maven的信息(其实这里可以在建立工程以后再来操作,你可以先执行第四大步——建立工程

点击 File --> Settings
在这里插入图片描述

搜索到maven,并进行配置,主要是最后两行,需要勾选覆盖,把我们刚刚搞的路径和设置文件给它填上,然后点击右下角的Apply ,然后点击OK结束配置

在这里插入图片描述

四、建立工程

IDEA的第一次打开应该是此界面,假设你现在没有工程,那你肯定是点击“新建工程” - New Project了
在这里插入图片描述

1. Spring initializr方式建立

再出现的选项中,选择Spring initializr,这个是IDEA为了帮我们快速创建Spring项目而加入的。其实选择上面的Maven也是一样的,最后都能建立起一个maven项目;

填上项目的名称和一些项目属性,然后 SDK 和 java 都选择java8版本,打包方式为Jar,点击Next
在这里插入图片描述

这里的SpringBoot版本只会显示当前官方仍在支持的版本,我们尽量这里选的要低一点,高的话,可能不再支持JDK8了。此处使用了2.7.12。然后搜索并勾选 spring-web 和 mybatis ,还有mysql驱动 这三个组件,点击Finish

在这里插入图片描述

经过一段时间的读条后,我们就能看到项目了,注意,此处,如果你在Idea里没有完成maven的配置,在红框处可能会有错误,此时无妨,按照上面 三、3。开发软件配置 配置后,再重启Idea即可

在这里插入图片描述

点开后可能还需要稍微修改下POM文件,主要是关注下mysql驱动的版本和类型,直至标红消失为止

在这里插入图片描述

2. 简易的Demo

薛微的花了几分钟,简易构建了下框架,确切的说是往里面填了三部分的内容,最后如下图
在这里插入图片描述
我们将在下面详细的探讨这些部分的作用

3. Demo的代码层级解析

Demo的代码部分其实就是在工程包下,项目创建时,其自带了个SeeUApplication ,这个类就是整个springboot的启动器,十分重要。我们写的则是业务代码,同样也在工程包com.example.seeu下,别写到其他地方去了。

在这里插入图片描述
一般代码层级就三层

  1. Controller 控制器层:来自外界的请求,会进入其中,并且根据请求的url来找到哪个类的哪个方法来处理该请求,把请求的意图拆分成各个功能,再调用各自功能模块
  2. Service 服务层:业务逻辑的核心,也即上面所谓的功能模块,承上启下
  3. Mapper 映射层: 最底层,针对需要用到数据库的地方,负责数据库的增删改查
    在这里插入图片描述

解释:

  • @Controller注解来自Spring框架本身 ,作用是将这个放入容器中。需要注意的是,一般情况下,该类及该类的方法上都有@RequestMapping 注解,该注解里面的值就是用来和url匹配的。
  • @Service注解来自Spring框架本身,作用和@Controller是一样的将这个放入容器中(注意不是接口,即@service不应该标注在ProductService上,而是标注在ProductServiceImpl上),之所以分成两个注解,主要还是逻辑上让开发者能清晰分层。
  • @Mapper注解是由myBatis提供的,其作用也是与spring框架结合,将该接口(的代理类)放入容器中

4. Mapper资源解释

除了代码,我们还在resource目录下放置了个mapper目录,resource指的就是项目资源,是能够被默认加载的,里面放置的主要是工程的配置,一般就是以xml、properties、yml等结尾的文件。如果你想加载其他位置的配置,需要额外导入。
在这里插入图片描述
这里的mapper放置的就是对应的sql,和我们在代码位置里mapper写的文件是一一对应的。需要特别注意的是,这里的sql文件里有个命名空间,要写上代码里mapper文件的全路径,不然spring无法把代码和sql文件关联起来。
在这里插入图片描述

5. 项目配置

上面的都是代码和资源,真正的配置我们现在来看,我们在IDEA创建工程时,其实它自动给我们建了个配置文件,名为application.properties,里面是空的。但我个人更喜欢yml的形式,所以加了个application.yml文件作为配置文件,内容如下:

在这里插入图片描述

我们需要知道,不管是yml,还是properties用处都是一样的,两种文件格式spring也都能识别并解析。只是文件里面的写法不一样,所以根据个人习惯选用

五、安装数据库及数据库工具

其实到现在为止,项目已经可以启动了,但是你真的用起来,走到数据库那一步,是会报错的,因为现在配置数据库,但却没有安装数据库,所以现在需要安装一个Mysql数据库

数据库我也给你准备好了 一个mysql8.0的库,这是windows在线安装的,可以一直点下一步 Windows版mysql8.0

安装设置时 一定要注意记住root用户的密码,后面需要以此连接
在这里插入图片描述
默认安装完会自动启动的,你也可以通过上图的管理,来设置mysql8.0的自动或手动启动。也可以通过安装服务器的目录手动启动
在这里插入图片描述
安装好数据库,我们还需要去数据库创建库,创建表,还需要用到数据库管理软件,此处推荐navicat,包我也给了 navicat window 安装版 内附安装使用说明,安装成功后如下:

在这里插入图片描述

六、建库建表

打开刚安装并注册好的navicat ,新建连接,因为mysql服务器也在本地,所以可以直接使用127.0.0.1
在这里插入图片描述
在这里插入图片描述
新建数据库,数据库名称是最关键的,因为上面我们的工程用的名字就叫springtest,此处自然也要对应
在这里插入图片描述
在这里插入图片描述
建完库后继续建表
在这里插入图片描述
此处可以直接通过界面按钮,完成表的创建,就不赘述写建表语句了
在这里插入图片描述
在这里插入图片描述
当然此过程中,你可以直接在数据库预填一些数据,如
在这里插入图片描述

七、工程配置检查及启动

将此处的数据库连接配置检查一下,包括数据库ip,端口,数据库名,用户名及密码 和我们设置的是否一样,检查无误后启动项目。
在这里插入图片描述

IDEA提供了软件内启动spring工程的能力,只需要在启动类 SeeUApplication 上点一下即可
在这里插入图片描述
在这里插入图片描述
稍等一会后,就能看到控制台的输出了,因为我们这是极简的工程,所以启动较快,很多复杂项目启动一次就需要数分钟
在这里插入图片描述

在url里输入路径后,回车,就可以直接看到指定方法返回预埋的数据了
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从零开始,手把手教你搭建Spring Boot后台工程并说明 的相关文章

  • 热重载在docker中运行的java程序

    我开发了一个java程序 应该在docker中运行 然而 我在调试docker中运行的java程序时遇到了很多痛苦 我在网上搜索 一些教程提出了像 spring dev tools 这样的工具 因为我的java程序是基于spring boo
  • Java 中的 XPath 节点集

    我在 eclipse 中有这段代码 NodeSet nodes NodeSet xPath evaluate expression inputSource XPathConstants NODESET 它给我 NodeSet 上的编译时错误
  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • 在Windows上安装Java 11 OpenJDK(系统路径问题)

    Java 11 最近发布了 众所周知 这个版本没有安装文件 当然 要在没有安装程序的情况下安装 Java 我将系统设置 PATH 和 JAVA HOME 设置为解压缩 Java 11 的文件夹的地址 根据对类似问题的已接受回复建议 唯一的事
  • JNI 不满意链接错误

    我想创建一个简单的 JNI 层 我使用Visual studio 2008创建了一个dll Win 32控制台应用程序项目类型 带有DLL作为选项 当我调用本机方法时 出现此异常 Exception occurred during even
  • ExceptionConverter:java.io.IOException:文档没有页面。我正在使用 iText

    当我执行下面的代码时 File f new File c sample pdf PdfWriter getInstance document new FileOutputStream f document open System out p
  • 一种使用 Java Robot API 和 Selenium WebDriver by Java 进行文件上传的解决方案

    我看到很多人在使用 Selenium WebDriver 的测试环境中上传文件时遇到问题 我使用 selenium WebDriver 和 java 也遇到了同样的问题 我终于找到了解决方案 所以我将其发布在这里希望对其他人有所帮助 当我需
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 反思 Groovy 脚本中声明的函数

    有没有一种方法可以获取 Groovy 脚本中声明的函数的反射数据 该脚本已通过GroovyShell目的 具体来说 我想枚举脚本中的函数并访问附加到它们的注释 Put this到 Groovy 脚本的最后一行 它将作为脚本的返回值 a la
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • 将多模块 Maven 项目导入 Eclipse 时出现问题 (STS 2.5.2)

    我刚刚花了最后一个小时查看 Stackoverflow com 上的线程 尝试将 Maven 项目导入到 Spring ToolSuite 2 5 2 中 Maven 项目有多个模块 当我使用 STS 中的 Import 向导导入项目时 所
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它

随机推荐

  • k8s学习(五)ReplicaSet的使用

    ReplicaSet ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合 可确保指定数量的pod在任何设定的时间运行 因此 它通常用来保证给定数量的 完全相同的 Pod 的可用性 示例 1 nginx
  • C++基础之纯虚函数

    一 纯虚函数的定义 纯虚函数是一种特殊的虚函数 在许多情况下 在基类中不能对虚函数给出有意义的实现 而把它声明为纯虚函数 它的实现留给该基类的派生类去做 这就是纯虚函数的作用 C 中的纯虚函数 一般在函数名后使用 0作为此类函数的标志 前面
  • 4,引擎初始化--(5)初始化actor--6,生成PlayActor--(2)玩家登录--3,PostLogin()(学习资料来自于ue4游戏框架)

    一旦PlayerController生成出来 world关于玩家的网络的初始化工作全部完成 接下来 进行PostLogin 从而在玩家加入游戏时 能做一些设置工作 默认情况下 GameMode会为新生的PlayerController建立一
  • RFID技术在智慧图书馆盘点系统中的优势

    RFID射频识别及技术 作为一种新兴的非接触式的自动识别技术 其基本原理是电磁理论 因其操作便捷高效 无需人工干预 可在各种恶劣环境下 通过射频信号自动识别目标并获取相关数据 可识别高速运动中的物体并可同时识别多个标签 可以远距离识别 而不
  • _fseeki64在linux下的头文件,linux c 语言之--fseek(),fseeko(),fseeko64()讲解 (转载)

    转载 http blog csdn net lemoncyb article details 16841317 fseek 函数讲解 函数定义 int fseek FILE stream long offset int fromwhere
  • 查询目标服务器系统,查看目标服务器的操作系统

    查看目标服务器的操作系统 内容精选 换一换 云硬盘挂载至云服务器时 无法挂载 以下排查思路根据原因的出现概率进行排序 建议您从高频率原因往低频率原因排查 从而帮助您快速找到问题的原因 如果解决完某个可能原因仍未解决问题 请继续排查其他可能原
  • Linux-乌班图常用命令

    Linux提供了大量的命令 利用它可以有效地完成大量的工作 如磁盘操作 文件存取 目录操作 进程管理 文件权限设定等 所以 在Linux系统上工作离不开使用系统提供的命令 要想真正理解Linux系统 就必须从Linux命令学起 通过基础的命
  • Android框架体系架构的知识,值得收藏!

    一 概述 随着业务的发展 工程的逐渐增大与开发人员增多 很多工程都走向了模块化 组件化 插件化道路 来方便大家的合作开发与降低业务之间的耦合度 现在就和大家谈谈模块化的交互问题 首先看下模块化的几个优势 模块化的优势 结构清晰 业务独立 代
  • BUUCTF Web [极客大挑战 2019]Knife

    作者主页 士别三日wyx 此文章已录入专栏 网络攻防 持续更新热门靶场的通关教程 未知攻 焉知收 在一个个孤独的夜晚 你完成了几百个攻防实验 回过头来才发现 已经击败了百分之九十九的同期选手 极客大挑战 2019 Knife 一 题目简介
  • Android Context

    1 Context概念 Context 中文直译为 上下文 小学读语文的时候我们知道 有时候理解一个句子 需要看看上下文 这里上下文有时需要看看上下临接着的几段话就可以理解他的意思 有时候呢 我们需要把整篇文章都读取一遍才能知道他的意思 一
  • 【基于Leaflet和Canvas绘图的前端大量栅格数据渲染】

    1 需求 有包含30万坐标点的json文件 每个坐标点包含经度 纬度 行值 列值 数值 现需要根据数值分级进行不同颜色的显示 并在地图的正确位置进行渲染 最终效果如下 2 环境和工具 2 1 使用Edge Chrome 实测采用Chromi
  • 深度学习 -- Faster rcnn 算法流程详解

    经典论文 后续很多论文以此为基础 所以搞懂流程比较重要 中间如果 有写的不对 有问题或者看不懂的地方 还望指正 如果有了新的理解 我会持续更新 Faster Rcnn是目前学术上用的非常多的目标检测算法 这里来认真的梳理一遍该算法的流程 主
  • 2020年度全球人工智能十大事件

    当前 新一代人工智能技术在全球蓬勃兴起 迅猛发展 与大数据 区块链 5G等新技术相互融合 相互因应 为经济社会发展尤其是数字经济发展注入新动能 正在深刻改变社会生产生活方式 与此同时 如何在新技术变革浪潮中始终立于主动 实现人工智能等前沿科
  • Nerf(Representing Scenes as Neural Radiance Fields for View Synthesis)代码复现笔记

    前言 本文旨在帮助小白快速了解or学习复现出Nerf的代码 整体结构保持不变 不过会针对部分细节为了更好理解进行了修改 本文会相应更新讲解视频于B站 id 出门吃三碗饭 有问题到b站评论区留言 同步更新于 公众号 AI知识物语 B站讲解视频
  • 向ChatGPT高效提问模板

    我想请你XXXX 请问我应该如何向你提问才能得到最满意的答案 请提供全面 详细的建议 针对每一个建议请你提供具体的提问范例 注意这些范例都是关于如何向你提问获取做这件事的建议的 最后根据你所有的建议 再综合提供一个总的提问范例 注意这个范例
  • 车辆强制降速系统讨论

    近期发生了不少的汽车恶意撞人的事故 造成了严重的人员伤亡 如 江苏盐城警方通报轿车撞人事故致2死6伤 涉事司机已被控制 在当前的科技水平下 这样的事件是可以通过技术手段来避免的 这就是车辆强制降速系统 FRS 通过摄像头 雷达等传感器来判断
  • QQ个人文件夹保存位置无效

    必须写文章谴责QQ这种垃圾软件 B 了 dog 腾讯家的QQ真没几个好用的 之前是PC版QQ群文件跳转回来显示错误bug 之后是手机QQ看点等各种消息bug 现在隔了几年了还有 个人文件夹保存位置无效 根本没有改进 QQ个人文件夹保存位置无
  • $emit传递参数

    emit传递一个参数时 子组件代码 let data name 王五 age 50 this emit change data 父组件代码
  • python traceback安装_Fedora 25工作站:Anaconda在安装过程中抛出Traceback错误

    我正在尝试在联想Ideapad上安装Fedora 25 Workstation 使用具有20GB HDD空间的VMWare Player 2GB RAM 2个处理器核心 安装顺利到第2阶段 Anaconda试图创建用户 然后 它显示弹出错误
  • 从零开始,手把手教你搭建Spring Boot后台工程并说明

    文章目录 前言 一 JDK 二 开发软件 三 项目管理 1 maven安装 2 连接至仓库 3 开发软件配置 四 建立工程 1 Spring initializr方式建立 2 简易的Demo 3 Demo的代码层级解析 4 Mapper资源