切入点方法的定义

切入点方法的定义:

表达式匹配规则举例:
public * addUser(com.pb.entity.User)
“*”表示匹配所有类型的返回值。
示例:
public int addUser(User u);
public String addUser(User u);

public void * (com.pb.entity.User)
“*”表示匹配所有方法名。
示例:
public void selectUser(User u);
public void a(User u);

public void addUser ( . . )
“. .”表示匹配所有参数个数和类型。
示例:
public void addUser(int a)
public void addUser(int b,int c)

一. * com.pb.service. * . * (. .)
匹配com.pb.service 包下所有类的所有方法。
示例:
public void com.pb.service.A.a();
public String com.pb.service.B.a();
二. * com.pb.service. .* (. .)
匹配com.pb.service 包及子包下所有类的所有方法

切面编程(AOP,Aspect-Oriented Programming)中的切入点表达式是一种用于定位需要应用切面(如日志记录、事务管理等)的特定执行点的语言。常见的切入点表达式包括: 1. 类名或包名:`@Aspect`注解的`pointcut`属性可以指定一个简单的基本匹配,如`execution(* com.example.service.*.*(..))`,表示所有com.example.service包下的类的公共方法都将作为切入点2. 方法签名匹配:例如,`execution(public * methodName*(..))`,指定了某个方法作为切入点,其中*methodName*是你要匹配的具体方法名。 3. 条件表达式:`and()`、`or()`、`not()`等可以组合多个条件,如`execution(* get*(..) && !within(OrderServiceImpl.class))`,只对不在OrderServiceImpl类内的get方法应用切面。 4. 运算符和通配符:还可以使用`args()`、`target()`等运算符来进一步细化匹配,比如检查方法参数或目标对象类型。 切入点方法(通常称为通知方法,如`before()`, `after Returning()`, 等)是切面中的实际业务逻辑部分,用于在指定的切入点执行前、后或异常处理等场景。定义一个通知方法时,需要添加特定的注解,例如: - `@Before("pointcutExpression")`: 在切入点执行之前调用的方法,`pointcutExpression`即上面提到的切入点表达式。 - `@AfterReturning("pointcutExpression", result="returnVal")`: 指定的方法将在切入点执行并返回结果之后调用,`result`参数用于引用返回值。 - `@Around("pointcutExpression")`: 围绕式通知,提供完整的包围执行控制,方法体内部可以决定是否继续原方法执行。 要在通知方法上添加注解,只需在方法声明上方加上相应的AOP注解,如`@Around`或`@Before`,然后在注解中指定切入点表达式。例如: ```java @Around("@annotation(log)") public Object logAround(ProceedingJoinPoint joinPoint, Log log) throws Throwable { // 执行前操作... Object result = joinPoint.proceed(); // 调用原方法 // 执行后操作... return result; } @Log(name = "myMethod") public interface Log { // 具体注解字段定义 } ``` 在这个例子中,`@Log`是一个自定义注解,用于标记哪些方法应该被切面处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值