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

news2024/12/27 19:27:41

目录

前言
第一点:项目的结构
第二点: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框架,提升项目开发效率和代码质量。

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

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

相关文章

flask网页开发之旅:路由与视图函数详解

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:掌握flask网页开发的钥匙 二、路由:连接用户请求与网页内容…

发布-订阅(ZeroMQ) C++实现

1、目的 自从发了《发布-订阅(Publish-Subscribe)C实现》博文,收到不少反馈:主要的问题就是无法跨主机使用。 本次实现主要解决: 简化ZeroMQ的开发过程;尽可能简化发布订阅的API调用;订阅者消…

【计算机毕设】基于SpringBoot的学生心理咨询评估系统设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 随着社会的快速发展和竞争压力的增加,学生心理健康问题日益突出。设计和实现一个基于SpringBoot的学生心理咨询评估系统,旨在…

在Ubuntu乌班图上安装Docker

最近在学习乌班图相关的内容,找了一些文档安装的都是报错的,于是记录一下学习过程,希望也能帮助有缘人,首先查看乌班图的系统版本,我的是如下的: cat /proc/version以下是在Ubuntu 20.04版本上安装Docker。…

LeetCode739:每日温度

题目描述 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 解题思想 使用单…

Windows Server安全配置

Windows Server操作系统安全配置,加固windows server。 1、密码安全 设置密码最小长度为10 开始-管理工具-本地安全策略-安全设置-账户策略-密码策略,修改密码长度最小值为10。 2、密码使用期限 设置密码最长使用期限为30天 开始-管理工具-本地安全策…

list 的实现

目录 list 结点类 结点类的构造函数 list的尾插尾删 list的头插头删 迭代器 运算符重载 --运算符重载 和! 运算符重载 * 和 -> 运算符重载 list 的insert list的erase list list实际上是一个带头双向循环链表,要实现list,则首先需要实现一个结点类,而一个结点需要…

【Python】解决Python错误报错:IndexError: tuple index out of range

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

宝塔 nginx 配置负载均衡 upstream

nginx 主配置文件加入 upstream myapp1 {server 192.168.124.101:5051;server 192.168.124.102:5052;server 192.168.124.111:5050;}站点配置文件中加入 location / {proxy_pass http://myapp1;}80端口映射到外网域名配置方法 加入红框中的代码 upstream myapp3 {server 192.16…

物联边缘网关有哪些功能?物联边缘网关在工业方向的应用-天拓四方

随着物联网技术的快速发展,越来越多的设备和系统正在接入到网络中,形成了一个庞大的智能生态系统。在这个系统中,物联边缘网关扮演着至关重要的角色,它不仅是连接设备和云端的桥梁,更是推动智能应用落地的关键。在当今…

强烈推荐十款数据防泄密软件,高人气的数据防泄密软件

100G的文件不见了?客户的电话信息被拷贝走了?源代码被竞争对手搞到手了?这些都是严重的数据泄密事件,为此,我们需要数据防泄密软件来全方位保护数据安全。根据当前市场上的热门推荐和综合评价,以下几款数据…

Arm发布Cortex X925、A725、A520,Armv9.2架构

随着半导体行业的不断发展,Arm 通过突破技术界限,为终端用户提供尖端解决方案,在核心和 IP 架构创新方面处于领先地位,尤其是在移动领域。2024 年,Arm 的年度战略进步重点是增强去年的 Armv9.2 架构,并带来…

Vue3-Vite-ts 前端生成拓扑图,复制即用

完整代码&#xff0c;复制即可用&#xff0c;样式自调 试过 jointjs dagre-d3 vis&#xff0c;好用一点 方法1&#xff1a;Vis.js npm install vis-network <template><div id"mynetwork" class"myChart" :style"{width: 100%, height: 9…

你是否正确地编写了 Git 提交信息?

介绍 在版本控制方面&#xff0c;Git 是一个非常有效的工具。然而&#xff0c;像任何其他工具一样&#xff0c;你必须正确使用它才能充分发挥其作用。你需要考虑不同的方面。本文着重介绍如何按照传统提交规范&#xff08;Conventional Commits specification&#xff09;编写…

在Unity中配置Android项目以允许HTTP流量,解决AVPro在Android平台中无法播放http视频

解决方法快速通道&#xff1a;拉到底&#xff0c;看倒数第二张图 好记性不如烂笔头 最近在使用AVpro插件播放http视频&#xff0c;在Editor中一切正常&#xff0c;然而打包在Android平台下就播放不了 AVPro在Unity中的警告&#xff1a; 感觉只是个警告&#xff0c;没引起注意…

3d渲染的常用概念和技术,渲染100邀请码1a12

之前我们介绍了3D渲染的基本原理和流程&#xff0c;这次说下几个常用概念和技术。 3D渲染中涉及到很多专业的概念和技术&#xff0c;它们决定了渲染质量和效果&#xff0c;常用的有以下几个。1、光线追踪 光线追踪是一些专业渲染器&#xff08;如V-Ray和Corona等&#xff09;…

EXSI虚拟机新增磁盘并将空间扩充到已有分区

这里写自定义目录标题 1、在EXSI虚拟机中新增一块磁盘配置大小2、确认新磁盘3、格式化新分区4、添加新分区到LVM5、将新增分区添加到已有分区里 1、在EXSI虚拟机中新增一块磁盘配置大小 注意事项&#xff1a; (1)需确保虚拟机已关闭活处于维护模式&#xff0c;避免数据丢失 (2…

多输入多输出非线性对象的模型预测控制—Matlab实现

本示例展示了如何在 Simulink 中设计多输入多输出对象的闭环模型预测控制。该对象有三个操纵变量和两个测量输出。 一、非线性对象的线性化 运行该示例需要同时安装 Simulink 和 Simulink Control Design。 % 检查是否同时安装了 Simulink 和 Simulink Control Design if ~m…

探索第三方美颜SDK:美颜插件的技术原理

本篇文章&#xff0c;我们将深入了解第三方美颜SDK&#xff0c;主要探讨关于美颜插件的工作机制与算法。 一、第三方美颜SDK的概述 第三方美颜SDK是由专业团队开发的一套用于实现美颜功能的软件开发工具包。它通常包括了各种美颜算法、滤镜效果、人脸识别等核心技术&#xff…

面试题vue+uniapp(个人理解-面试口头答述)未编辑完整....

1.vue2和vue3的区别&#xff08;vue3与vue2的区别&#xff08;你不知道细节全在这&#xff09;_vue2和vue3区别-CSDN博客&#xff09;参考 Vue3 在组合式&#xff08;Composition &#xff09;API&#xff0c;中使用生命周期钩子时需要先引入&#xff0c;而 Vue2 在选项API&am…