@AspectJ语法基础之切点表达式函数和函数入参时使用通配符

1.切点表达式函数

切点表达式函数大致分成四种类型:

a .方法切点函数:通过描述目标类方法的信息定义连接点,如:excution()(方法匹配模式串,如excution(*greetTo(..))代表所有目标类中的greetTo方法)和@annotation()(方法注解类名,如@annotation(com.lilei.test.NeedTest)表示任何标注了@NeedTest注解的目标类方法)函数

b. 方法入参切点函数:通过描述目标类方法的入参信息定义连接点,如:args(Object obj)表示所有且仅有一个入参对象为Object类型的参数,@args(com.lilei.test.NeedTest)表示任何这样的一个目标类中的方法的参数有一个或多个被@NeedTest注解

c. 目标类切点函数:通过描述目标类类型的信息来定义连接点,如within(com.lilei.test.*)表示test包中所有的连接点都匹配切点,target(com.lilei.test.NeedTest) 表示NeedTest以及实现类的所有连接点都匹配切点,@within()和@target()和上两个的用法类似。

d. 代理类切点函数:通过描述目标代理类的信息来定义连接点,如:this()

2.在函数入参时使用通配符

a. *代表匹配任何字符,但是只能匹配上下文中的一个元素
b. ..代表匹配任何字符,可以匹配上下文中多个元素,但是表示类的时候必须和*联合使用,在表示入参的时候则单独使用
c.+表示按照类型匹配指定类的所有类,必须跟在类名后面,如com.lilei.test.NeedTest+则表示继承或扩展指定类的所有类,同时还包括指定类本身

package com.lilei.test.aspectjTest;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

/**
 * 使用注解标示切面
 * @author lilei
 * Created by Administrator on 2017/10/19.
 */
@Aspect
public class PreGreetingAspect {
    @Before("execution(* greetTo(..))")//只要是目标类中所有的greetTo打头的方法都拦截
    public void beforeGreeting(){
        System.out.println("How are you");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值