首先自定义注解:@Time
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Time {
String value();
}
设置通知(advice)
@Aspect
@Order(1)
@Component
@Lazy(false)
public class TimeAspect {
private Logger logger = LoggerFactory.getLogger(getClass());
@Pointcut("@annotation(com.example.demo.aspect.annotation.Time)")
public void timePointCut() {}
@Around("timePointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
Method method = ((MethodSignature) point.getSignature()).getMethod();
Time time = method.getAnnotation(Time.class);
long beginTime = System.currentTimeMillis();
Object object = point.proceed();
logger.error(time.value() + "_TotalTime: " + (Sy