zoukankan      html  css  js  c++  java
  • 011 使用AOP操作注解

    一 . 概述

      本节是一个示例i程序的演示,说明之前讲解的这些知识.


    二 .演示

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface MyAnnotation {
        
        String name() default "";
        
    }

    首先我们定义了一个注解,这个注解有一个参数name.

    定义我们的切面类: 

    @Aspect
    @Component
    public class MyAspect {
        //此处表示的意思是,des的注解信息被注入到des变量上面去.
        @Around(value="@annotation(des)")
        public void around(ProceedingJoinPoint point,MyAnnotation des) throws Throwable {
            //现在我们的方法可以切入到含有指定注解的方法之中.
            System.out.println("被拦截的类为-->"+point.getSourceLocation().getWithinType().getName());
            //获取方法的名称
            String mathodName = point.getSignature().getName();
            System.out.println("方法的名字是:-->" + mathodName);
            //获取方法的参数
            System.out.println("方法的参数为-->"+Arrays.toString(point.getArgs()));
            //获取注解的内容
            String name = des.name();
            System.out.println("目标对象上的注解的name属性的值为-->" + name);//执行目标方法
            point.proceed();
        }
    }

    目标对象: 

    @Component
    public class Proxy {
        
        @MyAnnotation(name="abc")
        public void proxy(String  name) {
            System.out.println("proxy...");
        }
    }

    配置类:  

    @Configuration
    @EnableAspectJAutoProxy(proxyTargetClass=true)
    @ComponentScan("com.trek.demo")
    public class Config {
    }

    需要注意的就是,我们一定要开启AOP注解驱动.

    测试代码:  

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
            Proxy proxy = (Proxy) context.getBean("proxy");
            proxy.proxy("trek");

    三 .总结

      [1] 我们通过注解的方式可以完成注解属性的获取,以后这个例子就可以作为一个模板

      [2]其实point.getSourceLocation()就是获取类的信息

      [3]其实point.getSignature()就是获取代理method对象的方法.

  • 相关阅读:
    设计模式(十)—— 装饰者模式
    设计模式(九)—— 组合模式
    设计模式(八)—— 桥接模式
    设计模式(七)—— 适配器模式
    LINQ to XML
    设计模式(六)—— 单例模式
    设计模式(五)—— 原型模式
    Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案
    基于.Net平台常用的组件和框架整理
    Javascript中最常用的55个经典技巧(转)
  • 原文地址:https://www.cnblogs.com/trekxu/p/9098238.html
Copyright © 2011-2022 走看看