Spring框架总结(十一)

切入点表达式
可以对指定的“方法”进行拦截;从而给指定的方法所在的类生层代理对象。

其他跟十一样,只更改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()) &amp;&amp; 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>      
原文地址:https://www.cnblogs.com/liuyangfirst/p/6556400.html