import com.alibaba.excel.util.CollectionUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
@Aspect
@Configuration
@Slf4j
public class CheckCountAop1 {
//一个切点
@Pointcut("execution( * com.xxx.XXXController.xxxTest1(..)) " +
"|| execution(* com.xxx.XXXController.xxxTest2(..)) " +
"|| execution(* com.xxx.XXXController.xxxTest3(..))")
public void checkCount() {
}
//前置通知 统计次数
@Before("checkCount()")
public void before(JoinPoint joinPoint) {
List list = new ArrayList();
Object[] args = joinPoint.getArgs();
Object arg = args[0];
//校验数据类型
if (arg instanceof List) {
list = (List) arg;
if (!CollectionUtils.isEmpty(list)) {
Object obj = list.get(0);
//TestOneEntity为实体
if (obj instanceof TestOneEntity) {
//强转为实体类型
TestOneEntity entityOne = (TestOneEntity) obj;
//强转为List实体类型
List<TestOneEntity> list = (List<TestOneEntity>) list;
}
}
}
if (arg instanceof TestThreeEntity) {
TestThreeEntity entityThree = (TestThreeEntity) arg;
}
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>