创建一个切面类
import com.alibaba.fastjson.JSONObject;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class StoreAspect {
/**
* 此处的切点是注解的方式,也可以用包名的方式达到相同的效果
* '@Pointcut("execution(* com.wwj.springboot.service.impl.*.*(..))")'
*/
@Pointcut("@annotation(com.hunt.mobile.annoation.StoreBrowseAnnotation)")
public void operationLog() {
}
//@After 目标方法调用之后通知
@After("operationLog()")
public void addUserBrowseRecord(JoinPoint joinPoint){
Object[] objects = joinPoint.getArgs();
String storeId = JSONObject.parseObject(JSONObject.toJSONString(objects[0])).get("storeId").toString();
//这里根据自己需要的逻辑编码
//比如获取storeId新增数据到用户访问记录的表
}
}
创建一个annotation类
匹配连接点被它参数指定的Annotation注解的方法。也就是说,所有被指定注解标注的方法都将匹配。
import java.lang.annotation.*;
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface StoreBrowseAnnotation {
String value();
}
在要切入的的接口上定义
@StoreBrowseAnnotation("selectMStore")
本文介绍了如何使用Java的AOP(面向切面编程)来记录用户访问接口的次数。通过创建切面类和定义特定的注解,可以匹配并拦截被该注解标记的接口方法,从而实现接口访问的统计功能。
1627





