Spring AOP可以方便地监控方法执行情况,可以用来记录系统日志。以下是通过after通知来记录指定方法的执行情况。

通知类:SysLogAfterAdvice

java 代码
  1. public class SysLogAfterAdvice implements AfterReturningAdvice {   
  2. public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {   
  3.     //实现代码   
  4.     }   
  5. }  

在该类中记录需要监听的方法执行情况,形成系统日志。

关键在于配置文件。

xml 代码
  1.    <bean id="id1_Service" class="org.springframework.aop.framework.ProxyFactoryBean">  
  2.        <property name="target">  
  3.            <ref local="beanTarge" />  
  4.        property>  
  5.         <property name="interceptorNames">  
  6.             <list>  
  7.             <value>logAfterAdvisorvalue>  
  8.         list>  
  9.         property>           
  10.    bean>  
  11. <bean id="logAfterAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">  
  12.      <property name="advice"><ref local="sysLogAfterAdvice" />property>  
  13.      <property name="pattern">  
  14.          <value>.*do.*value>  
  15.      property>  
  16.    bean>  
  17.     <bean id ="sysLogAfterAdvice" class="com.jiuqi.mcasv2.logic.sysmng.SysLogAfterAdvice" >  
  18.         <property name="logMngBO"><ref bean="logMngBO"/>property>  
  19.     bean>   

id1_Service中属性interceptorNames指定进行监听器列表,其次序是有影响的。

监听器logAfterAdvisor将通知及切入点组合在一起,指明对以do开头的方法发送通知sysLogAfterAdvice进行拦截处理。

其它类型的通知,配置方式同上,只要改变相应通知类就行了。其它可用通知类型包括before/around/after throwing等类型。

around通知是万金油型,对方法的执行前后情况都可拦截,通用。

但是建议用最适合的通知类型,而不是任何情况都用around通知,虽然它也能解决。

评论
发表评论

您还没有登录,请登录后发表评论

hlxiong
搜索本博客
博客分类
最近加入圈子
存档
最新评论