切入点表达式
可以对指定的“方法”进行拦截;从而给指定的方法所在的类生层代理对象。
其他跟十一样,只更改bean.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/context 10 http://www.springframework.org/schema/context/spring-context.xsd 11 http://www.springframework.org/schema/aop 12 http://www.springframework.org/schema/aop/spring-aop.xsd"> 13 14 <!-- dao 实例 --> 15 <bean id="myUserDaoAop" class="com.liuyang.pointcut.proxy.MyUserDaoAop"></bean> 16 <bean id="orderDao" class="com.liuyang.pointcut.proxy.OrderDao"></bean> 17 18 <!-- 切面类 --> 19 <bean id="aop" class="com.liuyang.pointcut.proxy.Aop"></bean> 20 21 <!-- Aop配置 --> 22 <aop:config> 23 24 <!-- 定义一个切入点表达式: 拦截哪些方法 --> 25 <!--<aop:pointcut expression="execution(* com.liuyang.pointcut.proxy.*.*(..))" id="pt"/>--> 26 27 <!-- 【拦截所有public方法】 --> 28 <!--<aop:pointcut expression="execution(public * *(..))" id="pt"/>--> 29 30 <!-- 【拦截所有save开头的方法 】 --> 31 <!--<aop:pointcut expression="execution(* save*(..))" id="pt"/>--> 32 33 <!-- 【拦截指定类的指定方法, 拦截时候一定要定位到方法】 --> 34 <!--<aop:pointcut expression="execution(public * com.liuyang.pointcut.proxy.OrderDao.save(..))" id="pt"/>--> 35 36 <!-- 【拦截指定类的所有方法】 --> 37 <!--<aop:pointcut expression="execution(* com.liuyang.pointcut.proxy.UserDao.*(..))" id="pt"/>--> 38 39 <!-- 【拦截指定包,以及其自包下所有类的所有方法】 --> 40 <!--<aop:pointcut expression="execution(* com..*.*(..))" id="pt"/>--> 41 42 <!-- 【多个表达式】 --> 43 <!--<aop:pointcut expression="execution(* com.liuyang.pointcut.proxy.UserDao.save()) || execution(* com.liuyang.pointcut.proxy.OrderDao.save())" id="pt"/>--> 44 <!--<aop:pointcut expression="execution(* com.liuyang.pointcut.proxy.UserDao.save()) or execution(* com.liuyang.pointcut.proxy.OrderDao.save())" id="pt"/>--> 45 <!-- 下面2个且关系的,没有意义 --> 46 <!--<aop:pointcut expression="execution(* cn.itcast.g_pointcut.UserDao.save()) && execution(* com.liuyang.pointcut.proxy.OrderDao.save())" id="pt"/>--> 47 <!--<aop:pointcut expression="execution(* cn.itcast.g_pointcut.UserDao.save()) and execution(* com.liuyang.pointcut.proxy.OrderDao.save())" id="pt"/>--> 48 49 <!-- 【取非值】 --> 50 <!--<aop:pointcut expression="!execution(* com.liuyang.pointcut.proxy.OrderDao.save())" id="pt"/>--> 51 <aop:pointcut expression=" not execution(* com.liuyang.pointcut.proxy.OrderDao.save())" id="pt"/> 52 53 <!-- 切面 --> 54 <aop:aspect ref="aop"> 55 <!-- 环绕通知 --> 56 <aop:around method="around" pointcut-ref="pt"/> 57 </aop:aspect> 58 </aop:config> 59 </beans>