尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

苍穹外卖注解解析

苍穹外卖注解解析
📅 发布时间:2026/7/23 16:24:04

一、 核心业务与架构层注解

1. AOP 与自动填充相关注解
为了避免每次新增或修改数据时,都手动去写setCreateTime、setUpdateUser等重复代码,项目使用了自定义注解结合 AOP 实现自动填充。

  • @AutoFill:自定义注解,标注在 Mapper 方法上。
    • 例子:@AutoFill(value = OperationType.INSERT)标在void insert(Employee employee);上,告诉切面这是一个新增操作,切面会自动把创建时间、创建人塞进employee对象里。
  • @Target 和 @Retention:元注解,定义 @AutoFill 的行为。
    • 例子:@Target(ElementType.METHOD)限制它只能用在方法上;@Retention(RetentionPolicy.RUNTIME)保证运行时能被 AOP 反射读取到。
  • @Aspect 和 @Pointcut:定义切面和切入点。
    • 例子:@Pointcut("@annotation(com.sky.annotation.AutoFill)")精准拦截所有带有 @AutoFill 注解的方法,触发自动填充逻辑。

2. 缓存相关注解 (Spring Cache)
结合 Redis 实现声明式缓存,减少数据库查询压力。

  • @EnableCaching:开启缓存功能。
    • 例子:写在启动类SkyApplication上,相当于打开了整个项目的缓存开关。
  • @Cacheable:查缓存,没有才查库。
    • 例子:@Cacheable(cacheNames = "userCache", key = "#userId")标在查询用户的方法上,先从 Redis 找userCache::1,找不到再去查数据库。
  • @CacheEvict:删缓存,保证数据一致。
    • 例子:@CacheEvict(cacheNames = "userCache", key = "#userId")标在修改用户的方法上,数据一改,立马把 Redis 里的旧缓存删掉。

3. 定时任务注解 (Spring Task)
处理超时未支付等后台自动任务。

  • @EnableScheduling:开启定时任务。
    • 例子:写在启动类上。
  • @Scheduled:定义执行频率。
    • 例子:@Scheduled(cron = "0 * * * * ?")标在checkOrderStatus方法上,表示每分钟执行一次,检查有没有超时的订单。

二、 Web 接口与交互层注解

1. 接口文档生成注解 (Swagger / Knife4j)
自动生成接口文档,方便前后端对接。

  • @Api 和 @ApiOperation:描述接口。
    • 例子:@Api(tags = "员工管理")标在EmployeeController上;@ApiOperation(value = "新增员工")标在save方法上。
  • @ApiModel 和 @ApiModelProperty:描述实体字段。
    • 例子:在EmployeeDTO类上写@ApiModel("员工DTO"),在name字段上写@ApiModelProperty("员工姓名"),这样文档里就会显示中文说明。

2. 请求处理与参数绑定注解
接收前端传来的各种数据。

  • @RestController 和 @RequestMapping:声明控制器和基础路径。
    • 例子:@RestController+@RequestMapping("/admin/employee")标在类上,表示所有接口都以/admin/employee开头。
  • @PostMapping / @GetMapping 等:映射具体请求。
    • 例子:@PostMapping标在save方法上,处理 POST 请求。
  • @RequestBody:解析 JSON 数据。
    • 例子:save(@RequestBody EmployeeDTO employeeDTO),Spring MVC 会自动把前端传来的 JSON 字符串变成EmployeeDTO对象。
  • @PathVariable:提取 URL 路径参数。
    • 例子:getById(@PathVariable Long id),自动提取/admin/employee/1中的1。
  • @RequestParam:提取查询字符串参数。
    • 例子:page(@RequestParam int page, @RequestParam int pageSize),接收?page=1&pageSize=10这种参数。

三、 数据持久层注解 (MyBatis)

  • @Mapper:声明数据访问接口。
    • 例子:@Mapper标在EmployeeMapper接口上,Spring 启动时会自动为它生成代理类并注入到容器中。
  • @Select / @Insert 等:直接写 SQL。
    • 例子:@Select("SELECT * FROM employee WHERE id = #{id}")标在方法上,省去写 XML 文件的麻烦。

四、 基础与通用注解

  • @Service / @Autowired:依赖注入。
    • 例子:@Service标在EmployeeServiceImpl上;@Autowired private EmployeeMapper employeeMapper;自动把 Mapper 注入进来。
  • @Slf4j:日志打印。
    • 例子:标在类上后,可以直接用log.info("新增员工成功");,不用手动new一个 Logger。
  • @Data:简化实体类。
    • 例子:标在Employee类上,Lombok 自动生成所有的 Getter、Setter、toString 方法

相关新闻

  • 自动化时代,如何高效部署SSL证书?
  • 2026年SCMP培训避坑——中研供应链刘老师学完才发现的3个弯路 - 中研供应链官方
  • 三性六讲 一问一答完整版

最新新闻

  • 2026北京空调维修商家实力榜单,全城上门靠谱优选 - 兔兔不是荼荼
  • 潍坊外转子永磁电机厂家哪家好?2026避坑指南:4个坑+5条硬标准,帮你绕开90%的坑 - mobible
  • 近期想做国内法帝诺把握行业新机遇靠谱公司推荐 - 招财兔数字员工
  • 佳能万能清零软件+详细操作G1800 G2800 G3800 G4800 IP8780 IP7280 IX6880IX6780 MG3580 MG3680 TS5080 TS6080 TS6020亲测
  • 交了8000万学费之后,这家佛山工厂决定不再只做代工
  • 深入解析Tiva™ TM4C1294时钟与电源管理:从寄存器配置到低功耗实战

日新闻

  • 亨得利盐城维修点在哪里?手表维修保养地址指南**公示(2026年7月最新) - 亨得利官方
  • 提升.NET API安全性:Boxed.AspNetCore.Swagger认证授权最佳实践
  • 帝舵佛山**网点地址更新:2026年7月售后热线电话与服务客户指南 - 帝舵中国官方服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号