Spring Boot3项目的常见通用整体架构

news2024/12/24 3:45:07

Spring Boot 3 项目的整体架构。

1. IDEA创建项目

<properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2. 基本项目结构

Spring Boot 项目通常遵循约定优于配置的原则,标准结构如下:

├── src/main/java
│   └── com.example.project
│       ├── config          # 配置类
│       ├── controller      # 控制器类,处理HTTP请求
│       ├── service         # 服务层,包含业务逻辑
│       ├── repository      # 数据访问层,通常使用 Spring Data JPA 或 MyBatis
│       ├── model           # 实体类,通常对应数据库表
│       ├── dto             # 数据传输对象,用于封装请求和响应数据
│       ├── exception       # 自定义异常类
│       ├── util            # 工具类
│       └── Application.java# 主应用类,包含 main 方法
├── src/main/resources
│   ├── application.yml     # Spring Boot 配置文件
│   ├── static              # 静态资源,如 HTML、CSS、JS 文件
│   └── templates           # 模板文件(如 Thymeleaf 模板)
└── src/test/java           # 测试代码

3. 分层架构

  • Controller 层:
    • 处理 HTTP 请求,解析请求参数,调用服务层,并返回响应数据。
    • 使用注解 @RestController@Controller
  • Service 层:
    • 包含业务逻辑,通常与一个或多个 Repository 交互。
    • 使用注解 @Service
  • Repository 层:
    • 负责数据的持久化操作,通常使用 Spring Data JPA 或 MyBatis 实现。
    • 使用注解 @Repository
  • Model 层:
    • 定义领域对象或实体类,通常对应数据库表。
  • DTO(Data Transfer Object)层:
    • 用于封装请求和响应的数据,确保 API 的数据传输安全性和简洁性。

上图
在这里插入图片描述

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

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

相关文章

500W逆变器(一)

EG8015_24V_500W 这款逆变器是基于 EG8015 SPWM 专用芯片而设计的方案。其额定的输出功率为 500 瓦, 最大输出功率为 600 瓦&#xff0c;输出电压为 220V10%&#xff0c;输出频率为 50Hz0.1Hz&#xff0c;额定输出电流为 2.3 安培。 穿越机降落的时候不要垂直降落&#xff0c;要…

✨机器学习笔记(三)—— 多元线性回归、特征缩放、Scikit-Learn(未完待续)

Course1-Week2: https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Supervised%20Machine%20Learning%20Regression%20and%20Classification/week2机器学习笔记&#xff08;三&#xff09; 1️⃣多元线性回归及矢量化2️⃣特征缩放&#xff08;Featur…

Java进阶13讲__第12讲_2/2

线程安全问题 线程同步方案 线程池 线程通信 理论补充 1. 线程安全问题 1.1 举例说明 1.2 代码实现 package com.itheima.a_线程安全;/* 线程安全:多个线程同时修改同一个资源取钱案例小明和小红是一对夫妻&#xff0c;他们有一个共同的账户&#xff0c;余额是10万元如…

西门子PLC与HMI之间的时间同步工控小周

HMI 时间同步功能工控人加入PLC工业自动化精英社群 HMI 设备具有时间同步功能&#xff0c;利用 HMI 设备的该功能&#xff0c;可实现 PLC 和 HMI 之间的时间同步&#xff0c;进而实现多个 PLC 之间的时间同步。 HMI 设备时间同步的属性&#xff1a; 1.HMI 设备既可作为主站对…

WinCC 中对 VBS 进行单步执行调试

以前应该写过文章给各位展示如何在WinCC 中通过自身控件对脚本&#xff08;C、VBS&#xff09;进行脚本诊断和排错。但是也有用户反馈说在编写了一些相对复杂的脚本后&#xff0c;WinCC自身控件无法做到单步调试&#xff0c;也会影响脚本的诊断调试效率。如果能够对WinCC 中的脚…

系统编程-多路IO复用

多路IO复用 目录 多路IO复用 三种方法实现多路IO复用 一、 select 函数 - 使用 select 来进行多路 io 复用的步骤 1、创建文件描述符集合 2、对集合进行清空操作 3、使用函数将要进行监测的文件描述符添加到集合中 4、对集合中的文件描述符进行监测 5、对哪个文件描述…

【网络安全】shortscan+ffuf+代码审计实现LFI和SSRF

未经许可,不得转载。 文章目录 正文正文 目标网页example.com: 使用IIS-ShortName-Scanner工具进行扫描: https://github.com/irsdl/IIS-ShortName-Scanner扫描结果如下: 这意味着目标容易受到IIS短文件名泄露的攻击。 IIS短文件名泄露: https://github.com/irsdl/IIS-S…

OpenCV-轮廓检测

文章目录 一、简介1. 意义2.具体步骤 二、代码实现三、总结 一、简介 1. 意义 在OpenCV中&#xff0c;轮廓检测是图像处理中一个非常重要的环节&#xff0c;它允许我们识别图像中的形状。这个过程通常涉及几个步骤&#xff1a;读取图像、转换为灰度图、应用阈值处理&#xff…

stm32驱动开发与linux驱动的区别

stm32&#xff0c;gpio设置原理 下图&#xff0c;定义了gpio E的基地址&#xff0c;只要将这个地址强制转换成gpiotypedf的类型&#xff0c;解析时&#xff0c;结构体地址就会自增。这样就可以对不同gpio组&#xff0c;就像定义。 全部gpio定义&#xff0c;强制为结构体类型…

C语言深度剖析--不定期更新的第六弹

extern关键字–最会帽子的关键字 看下面的代码&#xff1a; test.h #pragma once #include <stdio.h> extern int x;//声明不要进行初始化&#xff0c;也就是赋值&#xff0c;因为声明不开辟空间test.c #define _CRT_SECURE_NO_WARNINGS 1 #include "test.h&quo…

ESP-NETIF L2 TAP接口——启明云端乐鑫代理商

ESP-NETIF L2 TAP 概述 ESP-NETIF L2 TAP 接口是 ESP-IDF 访问用户应用程序中的数据链路层&#xff08;OSI/ISO 中的 L2&#xff09;以进行帧接收和传输的机制。在嵌入式开发中&#xff0c;它通常用于实现非 IP 相关协议&#xff0c;如 PTP 和 Wake on LAN 等。 Tips : 目前…

影响画布微信小程序canvas及skyline和webview用户界面布局的关键流程

影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 目录 影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 一、微信小程序canvas开发流程 1.1、官方指南 1.2、客制化开发 第一步&#xff1a;在 WXML 中添加 canvas 组件 第二步&…

【加密社】一行代码的漏洞,就蒸发了280亿美金!

加密社 2018年2月24日新闻,美图公司推出的第一个和区块链技术有关的项目叫做美链(英文缩写是BEC,全名叫做Beauty Chain) 这个项目发行的数字货币开始在一家叫OKEX的全球数字资产交易平台上可以买卖了。这个BEC币一共发了70亿个,价格曾经涨到了每个超过4美元,使得BEC的总价…

[A-09]ARMv8/ARMv9-Memory-内存空间(Address Spaces and Translation Regimes)

ver 0.2 更多精彩内容&#xff0c;请关注公众号 前言 任何人和组织的发展都需要空间&#xff0c;比如我们这个伟大的国家&#xff0c;幅员辽阔、大好河山决定了我们的发展潜力。这么大国土空间&#xff0c;不是随意无须的在发展&#xff0c;都是处于主动的规划(有形的手)或者…

跨境网红营销SOP流程1.0丨出海笔记

品牌出海利用红人营销基本是标配了&#xff0c;KOL 社交媒体是绝对的带货神器。比如美国歌手蕾哈娜Rihanna 的美妆品牌 Fenty Beauty 上市开卖后40天就达到了1亿美元&#xff0c;火遍全球美妆圈。例子和废话少说&#xff0c;其实大小红人都有用。 之前几位大神已经在出海笔记分…

网络编程入门-实现服务器与客户端通讯

概念学习 TCP概念&#xff1a; TCP&#xff08;Transmission Control Protocol&#xff09;协议指的是传输控制协议&#xff0c;是一个面向连接的传输协议&#xff0c;他是一个能提供高可靠性的通信协议&#xff0c;所谓高可靠性指的是数据无丢失、数据无误、数据无失序、数据…

【Linux】万字解读<进程控制>:创建&中止&等待&替换

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

2024年【甘肃省安全员C证】报名考试及甘肃省安全员C证考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年甘肃省安全员C证报名考试为正在备考甘肃省安全员C证操作证的学员准备的理论考试专题&#xff0c;每个月更新的甘肃省安全员C证考试总结祝您顺利通过甘肃省安全员C证考试。 1、【多选题】下列选用起重机钢丝绳时…

2 模拟——258. 各位相加 ★

2 模拟 258. 各位相加 ★ 给定一个非负整数 num&#xff0c;反复将各个位上的数字相加&#xff0c;直到结果为一位数。返回这个结果。 示例 1: 输入: num 38 输出: 2 解释: 各位相加的过程为&#xff1a; 38 --> 3 8 --> 11 11 --> 1 1 --> 2 由于 2 是一位…

RK3562 NPU供电要求

在《RK3562 NPU跑飞问题处理》文档中,有提及PWM_NPU网络对应的IO域电平,之前使用1.8V(PMUIO1电平),对应可以测量到VDD_NPU_P的电压为0.8V(上电后不工作状态),而最近硬件配置PMUIO1改为了3.3V,VDD_NPU_P的电压为0.6V,虽然部分AI模型能跑起来,但也存在NPU识别出错的情…