当前位置: 首页 > news >正文

springboot项目结构

基于 Maven/Gradle 构建规范,各包(目录)的职责和作用如下,按分层架构设计来分工:

1. 最外层基础目录

  • src/main/java
    核心代码存放根目录,所有 Java 源码(.java 文件)都在这里,编译、运行的核心逻辑围绕它展开。

2. 业务包结构(com.example.calccraft 下的子包)

  • config

    • 作用:存放配置类 ,比如 Spring Boot 的 @Configuration 类,用来配置数据库连接、Redis、拦截器、跨域、Swagger 等全局设置。
    • 示例:RedisConfig.java 配置 Redis 客户端,WebMvcConfig.java 注册拦截器、配置视图解析器。
  • controller

    • 作用:控制层 ,负责接收前端请求(HTTP)、参数校验、调用 Service 处理业务,最后返回响应(JSON/页面) 。是前后端交互的“入口”。
    • 示例:UserController.java 里写 @GetMapping("/user") 接口,处理用户查询逻辑。
  • dto(Data Transfer Object)

    • 作用:数据传输对象 ,用于前后端、服务间传递数据的“容器” 。比如前端传复杂参数、接口返回给前端的定制化数据结构,避免直接用 Entity 暴露数据库细节。
    • 示例:UserDTO.java 可能包含 usernamenickname ,但不含数据库字段 password
  • entity(也叫 model、domain)

    • 作用:实体类 ,映射数据库表结构(或其他数据源结构) ,每个字段对应表的一列,通常搭配 ORM 框架(MyBatis、JPA)使用。
    • 示例:UserEntity.javaidusernamepassword 对应数据库 user 表的字段。
  • interceptor

    • 作用:存放拦截器 ,用于拦截 HTTP 请求,实现统一的逻辑:比如登录校验、接口耗时统计、参数统一处理等 ,配合 config 里的配置生效。
    • 示例:LoginInterceptor.java 拦截请求,检查 token 是否合法。
  • mapper(也可能叫 dao)

    • 作用:数据访问层 ,MyBatis 场景下是 Mapper 接口 + XML(或注解) ,定义数据库操作(增删改查 SQL) ;JPA 场景下可能是继承 JpaRepository 的接口。负责直接操作数据库。
    • 示例:UserMapper.java@Select("select * from user where id=#{id}") ,或通过 XML 配 SQL。
  • service

    • 作用:业务逻辑层 ,封装核心业务逻辑,组合 Mapper 做数据操作,处理复杂业务流程(比如“下单”要校验库存、扣减、生成订单等步骤) ,供 Controller 调用。
    • 示例:UserService.javagetUserById() 调用 UserMapper 查询,可能还会做缓存、权限校验。
  • util

    • 作用:工具类包 ,存放通用工具方法:比如加密解密(CryptoUtil)、日期处理(DateUtil)、HTTP 工具、枚举常量等 ,让业务代码更简洁,避免重复造轮子。

3. 启动类(CalcCraftApplication

  • 作用:Spring Boot 项目的启动入口 ,带 @SpringBootApplication 注解,运行它会启动整个 Spring 容器,扫描包、加载配置、初始化 Bean 等。

这种分层结构的核心是 “高内聚、低耦合” :每层专注自己的职责,修改业务逻辑只动 service ,改接口入参只动 dto ,方便维护和协作开发 。如果是 Spring Cloud 等分布式场景,结构会更复杂(加 clientfeign 等包),但基础分层逻辑一致。

http://www.dtcms.com/a/347639.html

相关文章:

  • Axure:如何打开自定义操作界面
  • 顺序表(ArrayList)
  • 刷题日记0823
  • [特殊字符] 数据库知识点总结(SQL Server 方向)
  • MySQL:事务管理
  • games101 作业0 环境搭建与熟悉线性代数库
  • H264编解码过程简述
  • 数据结构 -- 哈希表
  • RAGFlow (一) 开发环境搭建
  • imx6ull-驱动开发篇37——Linux MISC 驱动实验
  • [机械结构设计-18]:Solidworks - 特征(Feature)是构成三维模型的基本单元,是设计意图的载体,也是参数化设计的核心。
  • 深入剖析分布式事务的Java实现:从理论到Seata实战
  • c语言中enum与#define的用法区别
  • 算法题(189):食物链
  • 如何利用数据库事务,来防止数据不一致的问题
  • 云原生概述
  • [e3nn] 归一化 | BatchNorm normalize2mom
  • 自然语言处理——06 迁移学习(上)
  • MATLAB实现CNN-LSTM-Attention 时序和空间特征结合-融合注意力机制混合神经网络模型的风速预测
  • 云计算-K8s 运维:Python SDK 操作 Job/Deployment/Pod+RBAC 权限配置及自定义 Pod 调度器实战
  • Kubernetes相关问题集(四)
  • 「数据获取」《贵港统计年鉴》(2008-2023)(2016、2017缺失)(获取方式看绑定的资源)
  • 开发指南134-路由传递参数
  • 【KO】前端面试七
  • 科研笔记:博士生手册
  • n8n热门的开源 AI 工作流平台实操
  • git实战(7)git常用命令速查表
  • C++实现常见的排序算法
  • STM32窗口看门狗(WWDG)深度解析:精准守护嵌入式系统的实时性
  • day39-keepalived