spring 日志拦截器,拦截beanName以"Ctrl"结尾的bean
public class LogFileInterceptor implements MethodInterceptor, ThrowsAdvice { private static Logger logger = Logger.getLogger(LogFileInterceptor.class); public Object invoke(MethodInvocation invocation) throws Throwable { Long start = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(); sb.append(invocation.getThis().getClass().getName()); sb.append("."); sb.append(invocation.getMethod().getName()); sb.append("("); sb.append(getArgs(invocation.getArguments())); sb.append(")"); Object obj = null; obj = invocation.proceed(); long end = System.currentTimeMillis(); sb.append("-->runtime:"); sb.append(start); sb.append("--"); sb.append(end); logger.info(sb.toString()); return obj; } public void afterThrowing(Method method, Object[] args, Object object, Throwable throwable) { logger.error(object.getClass().getName() + "." + method.getName() + "(" + getArgs(args) + ")", throwable); } private String getArgs(Object[] args) { StringBuffer sb = new StringBuffer(); String reval = null; if (args.length > 0) { for (int i = 0; i < args.length; i++) { sb.append(args[i]); sb.append(","); } reval = sb.substring(0, sb.length() - 1); } return reval; } } <!-- action自动代理 --> <bean name="logAutoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="proxyTargetClass" value="true" /> <property name="beanNames"> <list> <value>*Ctrl</value> </list> </property> <property name="interceptorNames"> <list> <value>logFileInterceptor</value> </list> </property> </bean> <bean id="logFileInterceptor" class="com.gangling.MmoLogFileInterceptor"> </bean>