初识Spring Boot:构建项目结构与组件解析

目录

前言
第一点:项目的结构
第二点:controller类的创建与使用(构造器)
第二点:service类的创建与使用(逻辑层)
第三点:Mapper类的创建与使用(数据操作)
总结

前言

在进行Spring Boot项目开发时,良好的项目结构和合理的组件划分是十分重要的。本文将介绍如何根据功能模块和职责划分文件夹,并解释在项目中创建和使用controllerservicemapper等重要组件的方法。 


考虑到小白不会标准的创建springboot文件,我专门写了一篇讲解文章:点击跳转

第一点:项目的结构

我一般在项目中创建以下文件夹,来区分每个模块

1.controller文件:控制器负责处理用户请求,并返回响应,充当了前端与后端之间的桥梁

2.service文件:服务层,用于逻辑的书写,如登录注册

3.entity文件:实体类,通常映射到数据库中的表,每个实体类对应一个数据库表

4.mapper文件:用于定义SQL查询和实体类之间的映射

5.exception文件:异常处理,自定义异常类可以提供更详细的错误信息

6.common文件:存放一些通用的工具类、常量、配置

7.utils文件:通常用来存放一些公共的工具类或方法

就重要的就是controller,service,mapper文件夹了,下面我会进行讲解

第二点:controller类的创建与使用(构造器)

1.创建一个WebController类

2.写下以下代码

@RestController     //解释成一个返回数据返回结构的构造器
public class WebController {

    //默认路径为localhost:8080
    @RequestMapping
    public Result hello(){
        return Result.success("hello!");
    }

}

简单理解就是:当收到localhost:8080路径的HTTP请求时,WebController类中的hello()方法会被调用,返回一个包含字符串“hello!”的成功的结果。

第二点:service类的创建与使用(逻辑层)

1.在WebController.java里添加代码

@RestController     //解释成一个返回数据返回结构的构造器
public class WebController {
    @Autowired //示将UserService类的实例自动注入到UserController类中
    UserService userService;

    //默认路径为localhost:8080
    @RequestMapping
    public Result hello(){
        //调用service层的方法
        String message=userService.getMsg();
        return Result.success("hello!");
    }
}

2.创建WebSercie类文件

3.编辑代码:

@Service
public class UserService {

   public String getMsg() {
        //创建随机数
        Random random = new Random();
        //获取随机数
        int randomNumber = random.nextInt();
        if(randomNumber>0){
            return "数值大于0";
        }else{
            return "数值等于0";
        }
    }
}

代码意思:getMsg()方法通过实例化Random类产生一个随机数,然后根据随机数的大小返回相应的字符串。

第三点:Mapper类的创建与使用(数据操作)

创建WebMapper接口文件

写一个搜索数据库所有数据的代码

@Mapper
public interface UserMapper {

    @Select("select * from user")
    User selectById(User user);

}

数据库得自己创建和链接哦

想要详细得教材可以看我置顶文章:在这篇文章中我有详细的解释和步骤,点击跳转


总结

通过本文的讲解,读者可以了解到如何按照一定的规范创建Spring Boot项目的文件结构,包括controller负责处理用户请求,service处理业务逻辑,mapper用于数据操作等关键文件夹的作用。同时,我们也详细地演示了如何编写简单的代码来实现基本的功能,例如根据请求返回不同的数据、创建随机数等。希望本文能够帮助读者更好地理解和应用Spring Boot框架,提升项目开发效率和代码质量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HQChart使用教程100-uniapp如何在vue3运行微信小程序

HQChart使用教程100-uniapp如何在vue3运行微信小程序 症状原因分析解决思路解决步骤1. 修改vender.js2. 修改HQChartControl.js 完整实例HQChart代码地址 症状 HQChart插件在uniappvue3的项目编译成小程序以后, 运行会报错,见下图。 原因分析 查了下…

抖音太可怕了,我卸载了

这两天刷短视频,上瘾了,太可怕了。 自己最近一直在研究短视频制作,所以下载了抖音,说实话,我之前手机上并没有抖音,一直在用B站。 用了两天抖音,我发现,这玩意比刷B站还容易上瘾啊…

【深度学习-第6篇】使用python快速实现CNN多变量回归预测(使用pytorch框架)

上一篇我们讲了使用CNN进行分类的python代码: Mr.看海:【深度学习-第5篇】使用Python快速实现CNN分类(模式识别)任务,含一维、二维、三维数据演示案例(使用pytorch框架) 这一篇我们讲CNN的多变…

对网工的误解,早就不是一点半点了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 上午好,我的网工朋友 很多人对网工是有误解的,同为网工的我深有感受。 虽然我的阅历不如老杨总多,但也在这行…

开源与闭源 AI 模型:发展路径的比较与前瞻

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

解决 iOS 端小程序「saveVideoToPhotosAlbum:fail invalid video」问题

场景复现: const url https://mobvoi-digitalhuman-video-public.weta365.com/1788148372310446080.mp4uni.downloadFile({url,success: (res) > {uni.saveVideoToPhotosAlbum({filePath: res.tempFilePath,success: (res) > {console.log("res > &…

chap4 simple neural network

全连接神经网络 问题描述 利用numpy和pytorch搭建全连接神经网络。使用numpy实现此练习需要自己手动求导,而pytorch具有自动求导机制。 我们首先先手动算一下反向传播的过程,使用的模型和初始化权重、偏差和训练用的输入和输出值如下: 我…

R语言绘图 --- 折线图(Biorplot 开发日志 --- 1)

「写在前面」 在科研数据分析中我们会重复地绘制一些图形,如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包(Biorplot),用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…

通过强化学习彻底改变大型数据集特征选择

文章目录 一、说明二、强化学习:特征选择的马尔可夫决策问题三、用于使用强化学习进行特征选择的 python 库3.1. 数据预处理3.2. 安装和导入FSRLearning库 四、结论和参考文献 一、说明 了解强化学习如何改变机器学习模型的特征选择。通过实际示例和专用的 Python 库…

Qt6.4.2基于CMake添加Qt3DCore模块报错

在文档中说明是添加 find_package(Qt6 REQUIRED COMPONENTS 3dcore) target_link_libraries(mytarget PRIVATE Qt6::3dcore)find_package是没有问题,但是target_link_libraries会报错,报拼写错误,无法链接上Qt6::3dcore 需要使用“3DCore”…

工厂如何最大化mes系统的价值

mes系统(Manufacturing Execution System)是现代工厂管理中的一个重要系统,它可以实现生产过程中的信息约束与控制,促进生产流程的跟踪和分析,提高生产效率及质量。 一、整合mes系统和erp系统 mes系统和erp系统是两个…

STM32 IIC协议

本文代码使用 HAL 库。 文章目录 前言一、什么是IIC协议二、IIC信号三、IIC协议的通讯时序1. 写操作2. 读操作 四、上拉电阻作用总结 前言 从这篇文章开始为大家介绍一些通信协议,包括 UART,SPI,IIC等。 UART串口通讯协议 SPI通信协议 一、…

【深度学习】YOLOv10实战:20行代码将笔记本摄像头改装成目标检测监控

目录 一、引言 二、YOLOv10视觉目标检测—原理概述 2.1 什么是YOLO 2.2 YOLO的网络结构 三、YOLOv10视觉目标检测—训练推理 3.1 YOLOv10安装 3.1.1 克隆项目 3.1.2 创建conda环境 3.1.3 下载并编译依赖 3.2 YOLOv10模型推理 3.2.1 模型下载 3.2.2 WebUI推理 …

微服务架构-微服务架构的挑战与微服务化的具体时机

目录 一、微服务架构的挑战 1.1 概述 1.2 服务拆分 1.3 开发挑战 1.4 测试挑战 1.4.1 开箱即用、一键部署的集成环境 1.4.2 测试场景和测试确定性 1.4.3 微服务相关的非功能测试 1.4.4 自动化测试 1.5 运维挑战 1.5.1 监控 1.5.2 部署 1.5.3 问题追查 1.5.4 依赖管…

chrome调试手机网页

前期准备 1、 PC端安装好chrmoe浏览器 2、 安卓手机安装好chrmoe浏览器 3、 数据线 原文地址:https://lengmo714.top/343880cb.html 手机打开调试模式 进入手机设置,找到开发者模式,然后启用USB调试 打开PC端chrome调试功能 1、点击chr…

视频汇聚平台EasyCVR对接GA/T 1400视图库:结构化数据(人员/人脸、车辆、物品)对象XMLSchema描述

在信息化浪潮席卷全球的背景下,公安信息化建设日益成为提升社会治理能力和维护社会稳定的关键手段。其中,GA/T 1400标准作为公安视频图像信息应用系统的核心规范,以其结构化数据处理与应用能力,为公安信息化建设注入了强大的动力。…

webpack5零基础入门-19HMR的应用

1.定义 HMR即HotModuleReplacement 开发时,当我们修改了其中一个模块的代码webpack默认会将所有模块重新打包编译,速度很慢所以我们需要做到修改摸个模块代码,只对这个模块的代码重新打包编译,其他模块不变,这样打包…

【excel】设置二级联动菜单

文章目录 【需求】在一级菜单选定后,二级菜单联动显示一级菜单下的可选项【步骤】step1 制作辅助列1.列转行2.在辅助列中匹配班级成员 之前做完了 【excel】设置可变下拉菜单(一级联动下拉菜单),开始做二级联动菜单。 【需求】在…

算法(六)计数排序

文章目录 计数排序技术排序简介算法实现 计数排序 技术排序简介 计数排序是利用数组下标来确定元素的正确位置的。 假定数组有10个整数,取值范围是0~10,可以根据这有限的范围,建立一个长度为11的数组。数组下标从0到10,元素初始…

【C++】哈希(2万字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 unordered系列关联式容器 unordered_map unordered_map的文档介绍 unordered_map的接口说明 unordered_set 底层结构 哈希概念 哈希冲突 哈希函数 哈希…