Spring AOP AspectJ Pointcut 表达式例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring AOP AspectJ Pointcut 表达式例子相关的知识,希望对你有一定的参考价值。

主要来源:http://howtodoinjava.com/spring/spring-aop/writing-spring-aop-aspectj-pointcut-expressions-with-examples/

1. 方法标签匹配方式

假设定义了接口EmployeeManager接口。

1)

execution(* com.howtodoinjava.EmployeeManager.*( .. ))

  以上切入点表达式可以匹配EmployeeManger接口中所有的方法。

2)

当切面方法和EmployeeManager接口在相同的包内,如果切入点表达式匹配所有所有方法,则表达式可以改成:

execution(* EmployeeManager.*( .. ))

3)匹配EmployeeManager接口的所有public方法。

execution(public * EmployeeManager.*(..))

4) 匹配EmployeeManager接口中权限为public并返回类型为EmployeeDTO的所有方法。

execution(public EmployeeDTO EmployeeManager.*(..))

5) 匹配EmployeeManager接口中权限为public并返回类型为EmployeeDTO,第一个参数为EmployeeDTO类型的所有方法。

execution(public EmployeeDTO EmployeeManager.*(EmployeeDTO, ..))

6) 匹配EmployeeManager接口中权限为public、返回类型为EmployeeDTO,参数明确定义为EmployeeDTO,Integer的所有方法。

execution(public EmployeeDTO EmployeeManager.*(EmployeeDTO, Integer))

2. 类型标签匹配模式

1)匹配在com.howtodoinjava包下所有类型中所有的方法。

within(com.howtodoinjava.*)

2)匹配在com.howtodoinjava包以及其子包下所有类型中所有的方法。

within(com.howtodoinjava..*)

3)匹配其他包一个类下的所有方法。

within(com.howtodoinjava.EmployeeManagerImpl)

4)匹配同一个包下一个类下的所有方法。

within(EmployeeManagerImpl)

5)匹配一个接口下的所有继承者的所有方法。

within(EmployeeManagerImpl+)

3. bean名字匹配模式

匹配所有以Manager结尾的beans中的所有方法。

bean(*Manager)

4. 切入点表达式拼接

在AspectJ中,切入点表达式可以通过&&,||,!等操作符进行拼接。

bean(*Manager) || bean(*DAO)

 上述这个例子表示匹配以Manager结尾或者以DAO结尾的beans中所有的方法。

以上是关于Spring AOP AspectJ Pointcut 表达式例子的主要内容,如果未能解决你的问题,请参考以下文章

Spring详解------AspectJ 实现AOP

[Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

[Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

在Spring中使用AspectJ实现AOP

Spring的aop操作

Spring详解------AspectJ 实现AOP