第一步、在applicationContext-mvc.xml开启AOP注解扫描
<aop:aspectj-autoproxy/>
第二步、创建增强类,实现日志记录
@Component //把切面添加到spring容器中
@Aspect //变成切面类
public class WriteLog {
/**
*参数:代表目标方法对象
*
*/
public Object around(ProceedingJoinPoint pjp) throws Throwable {
//得到方法签名对象
MethodSignature ms = (MethodSignature) pjp.getSignature();
Method m = ms.getMethod(); //获得方法对象
//判断方法上是否有@RequestMappering注解
if(m.isAnnotationPresent(RequestMapping.class)){
//获取此@RequestMappering注解
RequestMapping mapping = m.getAnnotation(RequestMapping.class);
System.out.println(new Date());
System.out.println(request.getRemoteAddr()); //获取客户机IP地址
System.out.println(m.getName());//保存方法名
System.out.println(mapping.name()); //获取注解的name属性值
}
Object object = pjp.proceed(); //执行真实的方法
return object;
}
}
第三步、配置切入点和切面
<bean id="advice" class="WriteLog"/>
<aop:config>
<aop:pointcut id="pt" expression="execution(* com.alibaba.controller.*.*.*.(..))"/>
<aop:aspect ref="advice" >
<aop:before method="around" pointcut-ref="pt"/>
</aop:aspect>
</aop:config>
第四步、测试即可