package com.example.es_log.config;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import cn.hutool.core.lang.Console;
/**
* 获取类以及方法上的注解
*/
@Slf4j
@Aspect
@Component
public class AopAnnotationConfig {
/**
* 设置方法切入点
*/
@Pointcut("execution(* com.example.es_log.controller.*.*(..))")
public void userEs() {
}
/**
* 环绕通知
*
* @param joinPoint
* @return
*/
@Around("userEs()")
public Object doAround(ProceedingJoinPoint joinPoint) {
long millis = System.currentTimeMillis();
try {
return joinPoint.proceed();
} catch (Throwable e) {
e.printStackTrace();
log.error(Console.where() + "\n" + e);
return null;
} finally {
System.out.println(System.currentTimeMillis() - millis);
}
}
/**
* 获取api注解信息
*
* @param joinPoint
*/
@Before("userEs()")
public void doBefore(JoinPoint joinPoint) {
Api api = null;
api = joinPoint.getTarget().getClass().getAnnotation(Api.class);
if (api != null) {
String[] apiVal = api.tags();
for (String x : apiVal) {
System.out.println(x);
}
}
}
/**
* 获取apiOperation描述信息
*
* @param joinPoint
*/
@After("userEs()")
public void doAfter(JoinPoint joinPoint) {
ApiOperation apiOperation = null;
MethodSignature ms = (MethodSignature) joinPoint.getSignature();
apiOperation = ms.getMethod().getDeclaredAnnotation(ApiOperation.class);
if (apiOperation != null) {
String value = apiOperation.value();
System.out.println(value);
}
}
}
通过aop获取swagger2类和方法上的注解信息
最新推荐文章于 2023-06-14 01:18:27 发布