一、注解

package com.jayce.boot.route.component.mock;import io.swagger.annotations.ApiModelProperty;import java.lang.annotation.*;@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MockData {@ApiModelProperty("模拟值key")String key() default "";
}

二、切面

package com.jayce.boot.route.component.mock;import com.jayce.boot.route.common.util.SpringUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;import java.lang.reflect.Method;@Slf4j
@Aspect
@Component
public class MockAspect {@Pointcut("@annotation(com.jayce.boot.route.component.mock.MockData)")public void pointCut() {}@Around("pointCut()")public Object around(ProceedingJoinPoint joinPoint) throws NoSuchMethodException {//用的最多通知的签名Signature signature = joinPoint.getSignature();MethodSignature msg=(MethodSignature) signature;Object target = joinPoint.getTarget();//获取注解标注的方法Method method = target.getClass().getMethod(msg.getName(), msg.getParameterTypes());//通过方法获取注解MockData mockData = method.getAnnotation(MockData.class);String key = mockData.key();MockService mockService = SpringUtil.getBean(MockService.class);Object mockValue = mockService.getMockValue(key);return mockValue;}
}

三、模拟数据类

package com.jayce.boot.route.component.mock;import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.jayce.boot.route.common.util.PageUtil;
import com.jayce.boot.route.entity.LibraryBook;
import org.springframework.stereotype.Service;import java.util.HashMap;
import java.util.List;
import java.util.Map;@Service
public class MockService {/*** 获取mock数据** @param key key* @return java.lang.String*/public Object getMockValue(String key) {Map<String, Object> map = new HashMap<>();map.put("key1", "{1,2,3}");PageInfo<LibraryBook> testPage = new PageInfo<>();List<LibraryBook> list = Lists.newArrayList(LibraryBook.builder().bookId(1L).bookName("HerryPoter").build());testPage = PageUtil.build(list, 10, 1, 10);map.put("testPage", testPage);return map.get(key);}
}

spring boot 注解实现mock数据相关推荐

  1. Spring Boot干货系列:数据存储篇-SQL关系型数据库之MyBatis的使用

    Spring Boot干货系列:数据存储篇-SQL关系型数据库之MyBatis的使用 前言 上篇我们介绍了Spring Boot对传统JdbcTemplate的集成,这次换一下,介绍下Spring B ...

  2. Spring Boot中前后端传递数据方式

    Spring Boot中前后端传递数据方式 postman作为客户端 目前前后端分离开发中用到的最流行的的参数格式是application/x-www-form-urlencoded和applicat ...

  3. Spring Boot注解

    文章目录 简介 @SpringBootApplication @EnableAutoConfiguration 条件自动配置 @ConditionalOnClass 和 @ConditionalOnM ...

  4. 超级详细的Spring Boot 注解总结

    日常编程中我相信大家肯定都用过spring,也用过spring的注解,哪怕面试的时候也经常会被问到一些spring和spring boot注解的作用和含义等,那么这篇就带大家来看看超级详细的Sprin ...

  5. Spring Boot 注解原理

    Spring Boot 注解原理 首先,先看SpringBoot的主配置类: @SpringBootApplication public class StartEurekaApplication {p ...

  6. Spring Boot注解的运行原理

    Spring Boot 是一个基于 Spring Framework 的开源框架,通过简化配置和开发过程,使 Spring 应用程序的开发变得更加快速和便捷.在 Spring Boot 中,注解是非常 ...

  7. Spring Boot注解大全,一键收藏了!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:www.cnblogs.com/tanwei81/p/681 ...

  8. 【建议收藏】Spring Boot注解全梳理!

    一.注解(annotations)列表 @SpringBootApplication:包含了**@ComponentScan**.「@Configuration」 和 「@EnableAutoConf ...

  9. Spring boot 注解 ConfigurationProperties 的使用

    原创自 第一勺金 00 最近在学习使用 spring boot.发现其中 @ConfigurationProperties这个注解使用的比较多.搜了比较多的文档都是英文,避免以后忘记,这里我也总结下它 ...

最新文章

  1. Spring面试五连问,这怎么顶啊
  2. 解决SQL server2005数据库死锁的经验心得
  3. hdu2155 小黑的镇魂曲(dp)
  4. PS学习笔记2-画笔的应用
  5. c语言for循环 wdtcn,MSP430F149的DS18B20C语言程序
  6. cocos2d 解密ccbi_怎么让cocosbuilder制作的动画(cocos2d-x的ccbi动画)播放完删除自己?...
  7. vue、cnpm不是内部文件_解决vue不是内部或者外部命令
  8. 云瓣影音网站微信端(已开源)
  9. 20200813每日一句
  10. selenium grid下载、原理、配置与使用(转载)
  11. PPT设置自动保存时间 mac_第17期分享:如何控制PPT演讲汇报时间?
  12. CTS 使用instrumentation命令测试
  13. ORB_SLAM2源码阅读(一)概要
  14. 50句英语成语:字面和实际意思大不同
  15. python+selenium实现淘宝双十一自动下单
  16. 爱情如水,宽容是杯~
  17. continue的用法
  18. [matlab编程实践].cli文件二进制格式读取【3D打印切片文件】
  19. 坚持#第407天~云仓刚换了新系统,现在又要换新仓库了
  20. 计算机音乐制作专业艺考,西安音乐学院2017年电子音乐制作专业校考考题范围...

热门文章

  1. DNA to Face,会是寻人缉凶的一颗“银弹”吗?
  2. x265-1.8版本-common/lowres.h注释
  3. setup写在script标签中
  4. 对接科技侠智能锁(Ble)总结
  5. UUID 和 GUID 的区别
  6. 如何驱动段码液晶屏?
  7. Windows Update MiniTool 20.12.2016 控制Window更新下载及使用教程
  8. 文件被永久删除、格式化怎么办?DiskGenius、minitool来帮你
  9. 交警手势信号图解(新)----07年10月1日全国施行
  10. 能量原理与变分法笔记09: 虚功原理的例子