SpringBoot的src/main/java下完整的文件夹有哪些?

 springboot的src/main/java下完整的文件夹有哪些?

Spring Boot 项目通常采用 ​​MVC 分层架构​​(或更细的 DDD 分层),以下是核心分层文件夹:

目录

一、核心业务分层文件夹​

1. controller(控制层)

2. service(服务层)

3. repository(仓储层,Spring Data 场景)

4. mapper(映射层,MyBatis 场景)

5. model(模型层)

二、扩展功能文件夹​​

1. config(配置层)

2. exception(异常层)

3. util(工具层)

4. constants(常量层)

5. task(任务层,可选)

6. event(事件层,可选)

7. result(结果层,可选)

8. entity(实体层)


一、核心业务分层文件夹​

1. controller(控制层)

  • ​作用​​:处理 HTTP 请求(如 GETPOST),调用 Service 层完成业务逻辑,返回响应结果(如 JSON、视图)。
  • ​典型类​​:UserController.java(用户接口)、OrderController.java(订单接口)。
  • ​关键注解​​:@RestController(标记为 REST 控制器)、@RequestMapping(定义请求路径)、@GetMapping/@PostMapping(定义具体 HTTP 方法)。

2. service(服务层)

  • ​作用​​:封装核心业务逻辑(如用户注册校验、订单状态流转),调用 Repository 或 Mapper 层操作数据库,协调多个 DAO 或外部服务。
  • ​典型类​​:UserService.java(用户服务)、OrderService.java(订单服务)。
  • ​关键注解​​:@Service(标记为服务类)、@Transactional(声明事务)。

src/main/java/com/example/demo/service/
    ├── UserService.java       // 接口(定义业务方法)
    └── impl/
        └── UserServiceImpl.java  // 实现类(具体业务逻辑)

service下的impl文件夹作用是​​通过“接口-实现”分离,实现代码的高内聚、低耦合​​,让项目结构更清晰、更易维护和扩展。 

3. repository(仓储层,Spring Data 场景)

  • ​作用​​:定义与数据库交互的接口(继承 Spring Data 通用接口如 JpaRepository),通过 Spring Data 自动生成 SQL 实现,解耦业务与数据库操作。
  • ​典型类​​:UserRepository.java(用户仓储)、OrderRepository.java(订单仓储)。
  • ​关键依赖​​:Spring Data JPA(spring-boot-starter-data-jpa)。

4. mapper(映射层,MyBatis 场景)

  • ​作用​​:定义与数据库交互的接口(MyBatis Mapper),通过 XML 或注解绑定 SQL 语句,实现复杂 SQL 操作。
  • ​典型类​​:UserMapper.java(用户映射器)、OrderMapper.java(订单映射器)。
  • ​关键依赖​​:MyBatis 或 MyBatis-Plus(mybatis-spring-boot-starter)。

5. model(模型层)

  • ​作用​​:集中存放数据模型类,包括:
    • ​实体类(Entity)​​:映射数据库表(如 User.javaOrder.java)。
    • ​数据传输对象(DTO)​​:接口请求/响应的数据结构(如 UserRegisterDTO.javaUserInfoDTO.java)。
    • ​视图对象(VO)​​:前端视图展示的数据结构(如 UserVO.java)。
  • ​典型类​​:User.java(实体)、UserRegisterDTO.java(请求 DTO)、UserInfoVO.java(响应 VO)。

6. entity(实体层)

  • ​作用​​:entity文件夹(或包,全称为 ​​Entity​​,即“实体”)是​​数据持久化层的核心目录​​,主要用于存放与数据库表直接映射的 Java 类(即“实体类”)

二、扩展功能文件夹​

根据项目需求,可能还需要以下功能性文件夹:

1. config(配置层)

  • ​作用​​:集中存放自定义配置类(如 Bean 配置、拦截器、过滤器、外部化配置读取)。
  • ​典型类​​:WebMvcConfig.java(Web MVC 配置)、RedisConfig.java(Redis 配置)、SecurityConfig.java(安全配置)。
  • ​关键注解​​:@Configuration(标记为配置类)、@Bean(定义 Bean)。

2. exception(异常层)

  • ​作用​​:定义自定义异常类(如 UserNotFoundException.java)、全局异常处理器(捕获并统一处理异常)。
  • ​典型类​​:BusinessException.java(业务异常)、GlobalExceptionHandler.java(全局异常处理器)。

3. util(工具层)

  • ​作用​​:存放通用工具类(如日期处理、字符串加密、HTTP 工具),提供静态方法或单例 Bean。
  • ​典型类​​:DateUtils.java(日期工具)、StringUtils.java(字符串工具)、JwtUtil.java(JWT 工具)。

4. constants(常量层)

  • ​作用​​:集中存放项目中的常量(如状态码、枚举值、配置参数),避免魔法值散落在代码中。
  • ​典型类​​:ErrorCode.java(错误码枚举)、SystemConstants.java(系统常量)。

5. task(任务层,可选)

  • ​作用​​:存放定时任务(@Scheduled)或异步任务(@Async)的逻辑。
  • ​典型类​​:ScheduledTask.java(定时任务)、AsyncEmailTask.java(异步邮件任务)。

6. event(事件层,可选)

  • ​作用​​:基于 Spring 事件驱动模型(ApplicationEvent),定义自定义事件及监听器。
  • ​典型类​​:UserRegisteredEvent.java(用户注册事件)、OrderPaidEventListener.java(订单支付监听器)。

7. result(结果层,可选)

  • ​作用​​:result文件夹(或包)​​并非框架内置的标准目录​​,而是团队根据业务需求自定义的代码组织方式,主要用于存放​​接口返回结果的封装类​​(如统一响应对象、分页结果、错误信息等)。它的核心作用是将接口的返回数据标准化,提升前后端协作效率,并让业务逻辑与结果格式解耦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏波.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值