用于描述方法 [掌握]
语法: execution(修饰符 返回值 包. 类. 方法名 (参数) throws 异常)
修饰符, 一般省略
public 公共方法
* 任意
返回值, 不能省略
void 返回没有值
String 返回值字符串
* 任意
包,[省略]
com.gyf.crm 固定包
com.gyf.crm.*.service crm 包下面子包任意 (例如: com.gyf.crm.staff.service)
com.gyf.crm.. crm 包下面的所有子包 (含自己)
com.gyf.crm.*.service.. crm 包下面任意子包, 固定目录 service,service 目录任意包
类,[省略]
UserServiceImpl 指定类
*Impl 以 Impl 结尾
User* 以 User 开头
* 任意
方法名, 不能省略
addUser 固定方法
add* 以 add 开头
*Do 以 Do 结尾
* 任意
(参数)
() 无参
(int) 一个整型
(int ,int) 两个
(..) 参数任意
throws , 可省略, 一般不写.
案例 1:
execution(* com.gyf.crm.*.service..*.*(..))
案例 2: 或
- <aop:pointcut expression="execution(* com.gyf.crm.service.*.*(..)) ||
- execution(* com.gyf.*Do.*(..))" id="myPointCut" />
示例:
- <!-- 配置 UserService-->
- <bean id="userService" class="com.gyf.service.UserServiceImpl"></bean>
- <bean id="studentService" class="com.gyf.service.StudentService"></bean>
- <!-- 配置切面类对象 -->
- <bean id="myAspect" class="com.gyf.aspect.MyAspect"></bean>
- <!-- 全自动 AOP 配置
- 1. 在 bean 中配置 aop 约束
- 2. 配置 aop:conifg 内容, 把切入点和通知结合
- proxy-target-class: 使用 cglib 实现代理
- expression 表达式:* 任意
- execution(* com.gyf.service.*. * (..))
- 返回值 包名 类名 方法名 参数
- -->
- <aop:config proxy-target-class="true">
- <!-- 切入点:
- expression: 表达式
- 每个 service 的方法前面都开启事务和结束事务
- AOP: 用于事务配置 & 日志记录
- -->
- <aop:pointcut id="myPointcut" expression="execution(* com.gyf.service.*.*(..))"/>
- <!-- 通知 关联 切入点 -->
- <aop:advisor advice-ref="myAspect" pointcut-ref="myPointcut"></aop:advisor>
- </aop:config>
来源: http://www.bubuko.com/infodetail-3101039.html