几个月前使用了Spring的注解@Cacheable的注解,觉得这个注解真强大。刚好接到一个业务需求,打算利用AOP来实现。解耦、整洁。
- 第一步,先自定义一个注解。设置注解的作用范围、字段等。
package com.wework.doorservice.core.eventcollector;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 支持SpEL
* @author Grace.Pan
* @date 2019/8/29
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AnnotationDemo {
String channel() default "";
}
- 第二步,利用AOP,实现该注解的逻辑处理。
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
imp