Spring AOP可以方便地监控方法执行情况,可以用来记录系统日志。以下是通过after通知来记录指定方法的执行情况。
通知类:SysLogAfterAdvice
java 代码
- public class SysLogAfterAdvice implements AfterReturningAdvice {
- public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
- //实现代码
- }
- }
在该类中记录需要监听的方法执行情况,形成系统日志。
关键在于配置文件。
xml 代码
- <bean id="id1_Service" class="org.springframework.aop.framework.ProxyFactoryBean">
- <property name="target">
- <ref local="beanTarge" />
- property>
- <property name="interceptorNames">
- <list>
- <value>logAfterAdvisorvalue>
- list>
- property>
- bean>
- <bean id="logAfterAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
- <property name="advice"><ref local="sysLogAfterAdvice" />property>
- <property name="pattern">
- <value>.*do.*value>
- property>
- bean>
- <bean id ="sysLogAfterAdvice" class="com.jiuqi.mcasv2.logic.sysmng.SysLogAfterAdvice" >
- <property name="logMngBO"><ref bean="logMngBO"/>property>
- bean>
id1_Service中属性interceptorNames指定进行监听器列表,其次序是有影响的。
监听器logAfterAdvisor将通知及切入点组合在一起,指明对以do开头的方法发送通知sysLogAfterAdvice进行拦截处理。
其它类型的通知,配置方式同上,只要改变相应通知类就行了。其它可用通知类型包括before/around/after throwing等类型。
around通知是万金油型,对方法的执行前后情况都可拦截,通用。
但是建议用最适合的通知类型,而不是任何情况都用around通知,虽然它也能解决。