springboot实现页面统计
使用springboot+redis+spring aop+spring schedule实现页面访问量统计功能
思路介绍
页面访问访问量统计,常用的springboot项目中,我们的controller的获取文章的方法主要是
public class Controller{
@GetMapping("/blogs/get/{blogId}")
public String get(Model model,@PathVariable("blogId") Integer blogId){
Blog blog = blogService.getById(blogId);
model.addAttribute("blog",blog);
return "/admin/blog";
}
}
每调用一次该方法可以认为,就有一次用户访问了该页面,那么只需要统计访问接口的用户数量或者调用次数即可,如果为了真实,可以统计真实访问量,也可以统计接口调用次数
那么如何统计呢?
页面访问功能是一个独立的功能,就想日志系统,为了避免侵入代码,这里使用spring AOP进行切面操作
AOP切面获取方法调用次数
具体AOP的使用方法就不介绍了,为了灵活性,我使用注解方式进行切面,也可以直接切get()方法
package top.zhangzhongyao.codeblog.aop;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.JoinPoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import top.zhangzhongyao.codeblog.scheduled.RedisToMySQL;
import top.zhangzhongyao.codeblog.service.RedisService;
import javax.servlet