三层架构用到的注解总结
三层架构用到的注解总结¶
🏗 三层架构 + 注解示意图¶
✅ 一句话总结¶
- Controller 层:负责 请求/响应(
@RestController
、@RequestMapping
、@RequestBody
、@PathVariable
) - Service 层:负责 业务逻辑和事务(
@Service
、@Transactional
) - DAO 层:负责 数据库操作(MyBatis:
@Mapper
、@Select
;JPA:@Repository
、@Entity
)
三层架构(Controller → Service → DAO/Mapper)在 Spring Boot + MyBatis/JPA 项目里,常用的注解可以分层总结如下:
🌐 Controller 层(表现层 / Web 层)¶
主要负责接收请求、参数校验、返回响应。
- @RestController = @Controller + @ResponseBody,返回 JSON 数据。
- @Controller 传统 MVC 控制器,返回页面或 JSON。
-
@RequestMapping 定义类或方法的请求路径,可细化为:
-
@GetMapping / @PostMapping / @PutMapping / @DeleteMapping
- @RequestParam
绑定 URL 查询参数,如
?id=1
。 - @PathVariable
绑定路径参数,如
/user/{id}
。 - @RequestBody 接收 JSON 格式请求体并转换为对象。
- @ResponseBody 将返回值序列化为 JSON(通常用 @RestController 替代)。
- @CrossOrigin 解决跨域请求问题。
- @Validated / @Valid 参数校验(配合 Bean Validation 注解如 @NotNull、@Size)。
⚙️ Service 层(业务逻辑层)¶
负责业务逻辑编排、事务控制。
- @Service 标识业务逻辑组件,注册到 Spring 容器。
- @Autowired / @Resource / @Inject 依赖注入(常用在注入 DAO 或其他 Service)。
-
@Transactional 声明式事务控制,可配置:
-
rollbackFor = Exception.class(遇到受检异常也回滚)
- propagation(事务传播行为)
- @Value 注入配置文件中的属性值。
🗄 DAO/Mapper 层(数据访问层)¶
直接操作数据库。
如果用 MyBatis:¶
- @Mapper 标识 MyBatis 的 Mapper 接口。
- @Repository 可选,标识持久层组件。
- @Select / @Insert / @Update / @Delete 写在接口方法上的 SQL 注解。
- @Results / @Result 字段和属性映射。
- @Param 给方法参数命名,便于 SQL 占位符引用。
如果用 Spring Data JPA:¶
- @Repository 标识持久层。
- @Query 自定义 JPQL/SQL 查询。
- @Modifying 配合 @Query 做更新/删除操作。
- @Entity 标识一个持久化对象(表对应的实体类)。
- @Table 指定表名。
- @Id 主键。
- @GeneratedValue 主键生成策略。
- @Column 指定字段名。
✅ 总结(常见组合)¶
- Controller:
@RestController + @RequestMapping + @RequestBody/@PathVariable
- Service:
@Service + @Transactional
- DAO:
@Mapper/@Repository + @Select/@Insert...
这样分层之后,三层架构的职责清晰:
- Controller 只管请求/响应
- Service 管逻辑和事务
- DAO/Mapper 管数据库