2)第二种配置方法:aop:aspect 例 2.1.2 上一种方法需要实现接口,这种不用。这就是二者的区别。 加入以下两段: <bean id="myTransactionManagerAspect" class="aop.AOPMyTransactionManagerAspeMark_To_Win" /> <aop:aspect ref="myTransactionManagerAspect"> <aop:before method="startTransaction" pointcut-ref="myPointcut" /> <aop:after-returning method="commitTransaction" pointcut-ref="myPointcut"/> </aop:aspect> 两种方法和一块,成为以下的样子: <bean id="myTransactionManagerAspect" class="aop.AOPMyTransactionManagerAspeMark_To_Win" /> <!-- 配置切面 这种写法也正确"execution(* service.*.*(..))"--> <aop:config> <aop:pointcut id="myPointcut" expression="execution(* service.LoginServiceImpl.*(..))" /> <aop:aspect ref="myTransactionManagerAspect"> <aop:before method="startTransaction" pointcut-ref="myPointcut" /> <aop:after-returning method="commitTransaction" pointcut-ref="myPointcut"/> </aop:aspect> </aop:config> package aop; public class AOPMyTransactionManagerAspeMark_To_Win { public void startTransaction() { System.out.println("模拟start transaction aspect"); } public void commitTransaction() { System.out.println("模拟commit transaction aspect"); } } 输出结果: 模拟start transaction aspect LoginServiceImpll 模拟commit transaction aspect after loginServic.login()
更多请见下节:http://www.mark-to-win.com/tutorial/frame_Spring_usageaopaspect.html