第一步、在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>
第四步、測試即可