生命不可能有两次,但许多人连一次也不善于度过——吕凯特
我们写一个注解用AOP
去实现接口的访问记录,这个也可以用于日志记录等地方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import java.lang.annotation.*;
@Inherited @Documented @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface WithMe { String value(); }
|
然后在AOP
中这样写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component;
@Slf4j @Aspect @Component public class WithMeAop {
@AfterReturning(pointcut = "@annotation(withMe)", returning = "returnValue") public Object recordWithMe(JoinPoint point, WithMe withMe, Object returnValue) { return returnValue; } }
|
这样,当你的方法上有@WithMe
注解时,就会被AOP
织入