java 自定义注解 aop 使用

java 自定义注解简单使用

一 、 java 元注解

  • Target
  • Retention
  • Documented
  • Inherited

关于 java 元注解解释  https://www.cnblogs.com/kingsonfu/p/10634174.html

二、 编写自定义注解

@Retention(RetentionPolicy.RUNTIME) // 在runtime 期间生效

@Target({ElementType.METHOD,ElementType.TYPE}) // 目标 作用域 method

public @interface AnnoationCeshi { public String ceshiValue() default "wxx"; }

default  默认值 为 “”wxx" 非必填

三、 编写切面

@Component
@Aspect
public class AnnoationCeshiFine {

    // @annotation 表示 使用该注解的方法
    @Around(value = "@annotation(AnnoationCeshi)")
    public Object aroundMethod(ProceedingJoinPoint jp) throws Throwable {
       // String module = getModule(jp); // 逻辑代码
       // System.out.printf("**********" + module);
        return jp.proceed();
    }
}

 @Component  等价于   @Controller @Service  ...  spring 扫描并被 spring 容器管理

@Aspect 作用是把当前类标识为一个切面供容器读取

AnnoationCeshi  为自己定义的 注解

只要加了  @AnnocationCeshi 注解的 方法 都会执行 上述代码

 

--------------------------------------------------------------------------------------------我是分割线------------------------------------------------------------------------------------------------

    // 定义切点
    // @poincut execution 表达式
    //exxcution( * com.xy.xywx.controller.CeshiController.*(..)) CeshiController 类中所有方法  public 可省略
    @Pointcut("execution(public * com.xy.xywx.controller..*.*(..))")
    public void poincut(){}

 

@poincut  定义切面 , 里面为 excution 表达式  。 其中 excution 表达式中  public 可省略不写 第一个 * 表示 controller 包中的所有类,第二个 * 表示 类中的所有方法, .. 表示 不限参数

// @Before(value = "poincut()") //通知前增强
// @AfterReturning(value = "poincut()") // 通知后 增强
// @AfterThrowing(value = "poincut()") // 异常 增强
// @After(value = "poincut()") // final 增强
// @Around(value = "poincut()")

四、具体使用
    @Around(value = "poincut()")
    public Object aroundMethod(ProceedingJoinPoint jp) throws Throwable {
        System.out.println("-----");
        Object[] args = jp.getArgs();
        Arrays.stream(args).forEach(x -> System.out.println(x));
        return jp.proceed();
    }

return   jp.proceed() 重点

posted @ 2020-07-10 13:43  浅尝辄止夏  阅读(684)  评论(0编辑  收藏  举报