spring aop个人理解:
<bean id="helloWorldImpl1" class="com.xrq.aop.HelloWorldImpl1" /> <bean id="helloWorldImpl2" class="com.xrq.aop.HelloWorldImpl2" /> <bean id="timeHandler" class="com.xrq.aop.TimeHandler" /> <bean id="logHandler" class="com.xrq.aop.LogHandler" /> <aop:config> <aop:aspect id="time" ref="timeHandler" order="1"> <aop:pointcut id="addTime" expression="execution(* com.xrq.aop.HelloWorld.print*(..))" /> <aop:before method="printTime" pointcut-ref="addTime" /> <aop:after method="printTime" pointcut-ref="addTime" /> </aop:aspect> <aop:aspect id="log" ref="logHandler" order="2"> <aop:pointcut id="printLog" expression="execution(* com.xrq.aop.HelloWorld.do*(..))" /> <aop:before method="LogBefore" pointcut-ref="printLog" /> <aop:after method="LogAfter" pointcut-ref="printLog" /> </aop:aspect> </aop:config>
对以上的aop配置理解:
1:横切关注点timerHandler(bean相对应的类class为com.xrq.aop.TimeHandler,)其中的方法method="printTime" printtime方法在系统调用expression="execution(* com.xrq.aop.HelloWorld.*(..))" HelloWorld包下所有类(*)中的所有(..)方法之前会被调用<aop:before,因为配置成了before,而在之后也会调用<aop:after method="printTime" pointcut-ref="addAllMethod" />,相应的配置了before!:
2:以上两个横切关注点:order表示执行顺序。
注:以上的个人理解主要参考于以下博文:
https://www.cnblogs.com/hongwz/p/5764917.html