这节介绍的是切入点.(包括静态和动态的)
1概念
切入点 说切入点前要先说明下上一节定义和装配的通知.当中有一个非常关键的问题.通知与哪些方法匹配!按照上节的例子装配的代理对象(对应的目标对象为StudentImpl.java)应用的范围是整个类中的方法(虽然上节的例子中只有一个AddStudent方法)....问题就在这了.如何定义通知应用的范围,整个就是定义切入点..
2静态切入点
静态切入点只有在代理创建的时候执行一次.而动态切入点是在每次方法调用都执行
例子1(使用NameMatchMethodPointcutAdvisor实现映射)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="beforeAdvice" class="com.advice.BeforeAdvice"></bean>//这里是那前置通知作为一个通知,与整个例子关系不大.你也可以换成其他任何一种通知
<bean ></bean>//这里还是拿上一节的目标对象来说明
<bean id="isdoadvice" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">//注意,这里实现的父类是NameMatchMethodPointcutAdvisor
<property >
<value>add*</value>//这里用到了通配符*.表示匹配的方法是add开头的方法.
</property>
<property >
<ref bean="beforeAdvice"/>//通知的bean
</property>
</bean>
<bean id="student" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.service.Student</value>
</property>
<property name="interceptorNames">
<list>
<value>isdoadvice</value>//这里是上面定义过的切入点bean.而不是通知bean
</list>
</property>
<property name="target">
<ref bean="studenttarget"/>
</property>
</bean>
</beans>
例子2 (使用正则表达式)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="beforeAdvice" class="com.advice.BeforeAdvice"></bean>
<bean id="afterAdvice" class="com.advice.AfterAdvice"></bean>
<bean id="compareInterceptor" class="com.advice.CompareInterceptor"></bean>
<bean id="studenttarget" class="com.serviceimpl.StudentImpl"></bean>
<bean id="idaoadvice" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">//注意这个类
<property >//这个属性的name也和前面不一样
<value>.*add.+</value>
</property>
<property >
<ref bean="beforeAdvice"/>
</property>
</bean>
<bean id="student" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.service.Student</value>
</property>
<property name="interceptorNames">
<list>
<value>idaoadvice</value>
</list>
</property>
<property name="target">
<ref bean="studenttarget"/>
</property>
</bean>
</beans>