Spring AOP 实例

Spring AOP 中提供了两种PointcutAdvisor,分别是:

 ①org.springframework.aop.support.RegexpMethodPointcutAdvisor  (需要加上完整类名,可以用Spring提供的匹配方式)

 ②org.springframework.aop.support.NameMatchMethodPointcutAdvisor(只需要方法名,不用加类名)

下面看看使用第一种方式实现AOP的例子:

1.配置文件:

    <bean id="interceptorAdvisor"
        class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <!-- 业务实现方法名匹配 -->
       <property name="patterns">
        	<list>
				<value>com.a.dispatch</value>
				<value>com.b.service</value>
				<value>com.apache.xxx.dal.*DAO.*</value>	
			 </list>
        </property>
        <property name="advice">
            <ref bean="interceptorAdvice" />
        </property>
    </bean>
2.配置自己实现的advice:
 <bean id="interceptorAdvice"
    	class="com.yourImpl">
    	<property name="threshold">
    		<map>
    			<entry key="keyxxx" value="valuexxx"/>
 	
    		</map>
    	</property>
    </bean>
3.实现MethodInterceptor的invoke方法,真正执行的方法前后做相关工作,比如日志记录,数据监控等
4.添加

DefaultAdvisorAutoProxyCreator的配置:DefaultAdvisorAutoProxyCreator这个类功能更为强大,这个类的奇妙之处是他实现了BeanProcessor接口,当ApplicationContext读如所有的Bean配置信息后,这个类将扫描上下文,寻找所有的Advistor(一个Advisor是一个切入点和一个通知的组成),将这些Advisor应用到所有符合切入点的Bean中。

 <bean id="autoProxyCreator"
        class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
        <property name="proxyTargetClass" value="true"/>
    </bean>

附上spring ioc和aop精髓图:

Spring AOP 实例_第1张图片

Spring AOP 实例_第2张图片

Spring AOP 实例_第3张图片


你可能感兴趣的:(spring,AOP,bean,工作,IOC,Class)