多平台统一管理软件接口,如何实现多平台统一管理软件接口
434
2023-01-10
本文目录一览:
@Retention 自定义注解实现接口限流:注解的作用域自定义注解实现接口限流,包含RetentionPolicy参数
@Inherited :允许子类继承父类的注解
@Documented :此注解会包含在javadoc中
RedisTemplate对象的配置
切面类
获取web对象工具
测试接口
正常访问:
限流:
目标
本章我们将编写一个starter,目标如下:
1、对外提供 @OpenAPI 注解,使用此注解它会对接收的请求数据进行解密,对要返回的数据进行加密。
2、完成服务端使用示例
3、完成前端调用示例
加密规则
1、对业务数据进行AES加密,示意代码:encryptData=AES("业务数据", aesKey)
2、对AES的key进行公钥加密,示意代码:encryptKey=RSA(aesKey, 公钥)
3、签名sign=md5(encryptData+encryptKey)
加密后请求示例
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
请求参数
服务端返回示例
pom.xml
定义注解
配置公私钥
具体代码逻辑
定义切面和自动装配
spring.factories
服务端修改
在业务项目中引入jar 包
配置公私钥
改动的地方很少,只需要在原接口增加@OpenAPI注解即可
前端修改
修改前代码
修改后要先对参数加密,然后对返回数据解密
安装两个加密库
封装RSA、AES和Base64加解密
首先自定义注解实现接口限流,定义一个注解:
package com.guxiang.test;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
首先自定义一个 myTest注解
/**
* @author guxiang
* @date 2016年12月24日 下午10:22:11
* 自定义的myTest注解
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE})
public @interface MyTest {
long time() default -1;
}
其次自定义注解实现接口限流,写一个类用于被myTest注解自定义注解实现接口限流,实现测试:
package com.guxiang.test;
public class SomeDaoImpl {
public void save(){
System.out.println("保存了数据");
}
public void update(){
System.out.println("更新了数据");
}
}
写一个测试类 这个类 引用myTest注解:
package com.guxiang.test;
public class SomeDaoImplTest {
private SomeDaoImpl dao= new SomeDaoImpl();
/**
* 测试添加
*/
@MyTest
public void testAdd(){
dao.save();
}
@MyTest
public void testUpdate(){
dao.update();
}
最后自定义注解实现接口限流,写一个myTestRunner类使用反射实现注解的功能:
package com.guxiang.test;关于自定义注解实现接口限流和接口限流怎么实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 自定义注解实现接口限流的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口限流怎么实现、自定义注解实现接口限流的信息别忘了在本站进行查找喔。
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
// 反射注解
public class MyTestRunner {
public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
Class clazz = SomeDaoImplTest.class;
Method[] ms = clazz.getMethods();
for (Method method : ms) {
boolean hasMyTest = method.isAnnotationPresent(MyTest.class);
if (hasMyTest) {
method.invoke(clazz.newInstance(), null);
}
}
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~