先定义一个注解

  1. @Target({ElementType.TYPE})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. public @interface Visit {
  5. }

其中的Target表示注解作用的范围,ElementType的取值有

  • CONSTRUCTOR: 用于描述构造器
  • FIELD: 用于描述域
  • LOCAL_VARIABLE: 用于描述局部变量
  • METHOD: 用于描述方法
  • PACKAGE: 用于描述包
  • PARAMETER: 用于描述参数
  • TYPE: 用于描述类、接口 (包括注解类型) 或 enum 声明

    把注解放到特定的位置(类、方法或者其他)

    放到类上

    image.png

    aop切入点设置

    1. @Pointcut("@within(com.etoak.anno.Visit)")
    2. public void visit(){
    3. }

    放到方法上

    image.png

    1. @Pointcut("@annotation(com.etoak.anno.Visit)")
    2. public void visit(){
    3. }

    总结

    @within 使用在注解作用于对象上
    @annotation 使用在注解作用于方法上