基于 ssm + maven + redis 使用自定义注解 利用aop基于AspectJ方式 实现redis缓存 如何能更简洁的利用aop实现redis缓存,话不多说,上demo 需求: 数据查询时每次都需要从数据库查询数据,数据库压力很大,查询速度慢, 因此设置缓存层,查询数据时先从redis中查询,如果查询不到,则到数据库中查询 然后将数据库中查询的数据放到redis中一份,下次查询时就能直接从redis中查到,不需要查询数据库了 实现过程: 先搭建ssm的架子,引入redis,编写red…
  通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题,如果因网络问题.Nginx重试机制.微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后台产生多条重复记录,此时我们需要考虑在后台增加防重设置.   考虑到微服务分布式的场景,这里通过使用Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求的功能,基本实现思路:通过在需要防重的接口添加自定义防重注解,设置防重参数,通过AOP拦截请求参数,根据注解…
提取注解信息 使用注解修饰了类.方法.成员变量等成员之后,这些注解不会自己生效,必须由开发者提供相应工具来提取并处理注解信息.   Java使用java.lang.annotation.Annotation接口代表程序元素前面的注解,该接口是所有注解的父接口.Java5在java.lang.reflect包下新增了AnnotatedElement接口,该接口代表程序中可以接受注解程序元素(就是哪些类可以被注解修饰).该接口主要有如下几个实现类. Class: 类定义 Constructor: 构…
场景 不管是传统行业还是互联网行业,我们都需要保证大部分操作是幂等性的,简单点说,就是无论用户点击多少次,操作多少遍,产生的结果都是一样的,是唯一的.而今次公司的项目里,又被我遇到了这么一个幂等性的问题,就是用户的余额充值.创建订单和订单支付,不管用户点击多少次,只会有一条充值记录,一条新订单记录,一条订单支付记录. 技术方案 现在使用比较广泛的方案都是基于Redis. 方案:Redis+token 处理流程:数据提交前,前端要向服务端的申请token,token(带有过期时间)放到redis:…
说明: SSM项目中的每一个请求都需要进行日志记录操作.一般操作做的思路是:使用springAOP思想,对指定的方法进行拦截.拼装日志信息实体,然后持久化到数据库中.可是仔细想一下会发现:每次的客户端的每一次请求,服务器都会处理两件事情.一个是正常的业务操作:另一个就是我们额外要做的日志数据记录.这样的话,每次请求的"效率"就变得收到影响了,换句话说就是"耦合"了.明明一个请求是干一件特定的事情,你却又给我加上一部分东西.而且这一次请求是必须在额外做的事情做完才能返…
Redis 到底是不是单线程的程序? 多 IO 线程的初始化 IO 线程运行函数 IOThreadMain 如何推迟客户端「读」操作? 如何推迟客户端「写」操作? 如何把待「读」客户端分配给 IO 线程执行? 如何把待「写」客户端分配给 IO 线程执行? 总结 参考链接 Redis 源码简洁剖析系列 Redis 到底是不是单线程的程序? Redis 只有在处理「客户端请求」时,是单线程的:整个 Redis server 不是单线程的,还有后台线程在辅助处理任务. Redis 选择单线程处理请求,…
在常见的ORM框架中,大都提供了使用注解方式来实现entity与数据库的映射,这里简单地使用自定义注解与反射来生成可执行的sql语句. 这是整体的目录结构,本来是为复习注解建立的项目^.^ 好的,首先我们来确定思路. 1.  自定义@Table @Column注解, 我们稍微模仿hibernate,让@Table作用于类上,来表明实体类与数据表的映射关系,且让@Table中的属性value映射为数据表的名称tableName:让@Column作用于属性上(这里没实现作用于set方法上),表明属性…
利用注解开发一个通用的JWT前置校验功能 设计的预期: 系统中并不是所有的应用都需要JWT前置校验,这就需要额外设计一个注解Annotation来标识这个方法需要JWT前置校验.例如: @GetMapping("/dosth") //加入自定义注解JwtToken,该Controller方法在运行前就需要进行JWT校验 //JWT校验通过执行Controller方法 //JWT校验未通过则直接返回校验失败 @JwtToken public ResponseObject doSth(){…
转自:http://www.tuicool.com/articles/6z2uIvU 先描述一下应用场景,基于Spring MVC的WEB程序,需要对每个Action进行权限判断,当前用户有权限则允许执行Action,无权限要出错提示.权限有很多种,比如用户管理权限.日志审计权限.系统配置权限等等,每种权限还会带参数,比如各个权限还要区分读权限还是写权限. 想实现统一的权限检查,就要对Action进行拦截,一般是通过拦截器来做,可以实现HandlerInterceptor或者HandlerInt…
摘要: 本篇文章的场景是做调度中心和监控中心时的需求,后端使用TDDL实现分表分库,需求:实现关键业务的查询监控,当用Mybatis查询数据时需要从主库切换到备库或者直接连到备库上查询,从而减小主库的压力,在本篇文章中主要记录在Spring Boot中通过自定义注解结合AOP实现直接连接备库查询. 一.通过AOP 自定义注解实现主库到备库的切换 1.1 自定义注解 自定义注解如下代码所示 import java.lang.annotation.ElementType; import java.l…