execution:用于匹配方法执行的连接点;
    execution( com.test.method.des...*(..))

    1, execution() 表达式的主体
    2, 第一个“”符号 表示返回值的类型任意
    3, com.test.method.des AOP所切的服务的包名,即,需要进行横切的业务类
    4, 包名后面的“..” 表示当前包及子包
    5, 第二个“
    ” 表示类名,即所有类
    6, .
    (..) 表示任何方法名,括号表示参数,两个点表示任何参数类型

    execution(public (..)) 匹配所有的public修饰符的方法

    within:用于匹配指定类型内的方法执行;

    within(cn.java..*) . cn.java包及子包下的任何方法执行

    within(java..IPointcutService+) . java包或所有子包下IPointcutService类型及子类型的任何方法

    within(@cn..Secure *) 持有cn..Secure注解的任何类型的任何方法

    this:用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配;

    this(service.IPointcutService) 当前AOP对象实现了 IPointcutService接口的任何方法

    this(service.IIntroductionService) 当前AOP对象实现了 IIntroductionService接口的任何方法也可能是引入接口

    target:用于匹配当前目标对象类型的执行方法;注意是目标对象的类型匹配,这样就不包括引入接口也类型匹配;

    target(service.IPointcutService)当前目标对象(非AOP对象)实现了 IPointcutService接口的任何方法

    target(service.IIntroductionService)当前目标对象(非AOP对象) 实现了IIntroductionService 接口的任何方法不可能是引入接口

    args:用于匹配当前执行的方法传入的参数为指定类型的执行方法; (args属于动态切入点,这种切入点开销非常大,非特殊情况最好不要使用)

    args (java.io.Serializable,..) 任何一个以接受“传入参数类型为 java.io.Serializable” 开头,且其后可跟任意个任意类型的参数的方法执行,args指定的参数类型是在运行时动态匹配的

    @within:用于匹配所以持有指定注解类型内的方法;

    @target:用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解;

    @args:用于匹配当前执行的方法传入的参数持有指定注解的执行;

    @annotation:用于匹配当前执行方法持有指定注解的方法;