spring运用
文章平均质量分 92
阿基米德_3985
这个作者很懒,什么都没留下…
展开
-
(五)接口请求IP/URL限流(基于拦截器+注解+redis)
背景日常开发过程中,经常需要对一些资源消耗大的接口(例如:图片上传/下载接口,当遇到并发量大的时候,网络带宽咱比不断增加,导致程序无法正常运行)进行限流操作。以此来增加应用的稳定性和安全性。解决方案基于拦截器,在网关层对请求进行拦截,利用redis存贮请求来源信息,并进行计数,超过阀值时直接拒绝请求。利用注解来标记需要拦截的方法,方便灵活。(此方案基于springboot+redis)定义注解类Semaphore@Documented //生成文档@Inherited //可以被子类使用原创 2020-08-17 20:12:29 · 947 阅读 · 1 评论 -
(一)JDK动态代理简单实现
实现步骤(1)定义一个接口,代理的是接口(多态),不是具体的实现类;(2)定义处理类(实现InvocationHandler接口),重写invoke方法,由要代理接口的实现类来实例化处理类;(3)定义代理类Proxy,调用方法。创建接口:代理的是接口.不妨回顾一下mybatis的实现原理,在项目开发中的UserMapper接口和与之对应的UserMapper.xmlpublic inte...原创 2020-03-29 16:58:58 · 116 阅读 · 0 评论 -
(二)全局异常处理
背景:常见代码中使用try&&catch捕获处理异常,仅针对代码块。若没有全局异常处理,系统出现未处理的异常时会直接返异常信息,影响用户体验。(一)定义异常信息定义异常信息操作接口public interface BaseErrorInfoInterface { public String getResultCode(); public String get...原创 2020-04-13 20:44:14 · 246 阅读 · 0 评论 -
(三)使用AOP获取方法执行时间/记录请求/返回参数
背景:系统开发测试过程中,常需要关注请求参数和返回参数,以及方法运行时长(使用filter也可实现)。基于springAop注解实现@Aspect@Componentpublic class HttpAspect { //定义在controller包和所有子包里的任意类的public方法的执行 @Pointcut("execution(public * com.cb.sp...原创 2020-04-13 21:11:03 · 1837 阅读 · 0 评论 -
(四)使用拦截器鉴权
背景为增加系统安全性,对每个请求需要进行鉴权,过滤掉非法请求。基于Spring实现。鉴权通过时可通过ThreadLocal存储一些用户信息,方便之后业务使用。定义ThreadLocal对象@Componentpublic class CodeHolder { private static ThreadLocal<String> agentCodes = new Thr...原创 2020-04-13 21:42:44 · 425 阅读 · 0 评论