蝈蝈大王

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

直接看代码

springmvc中的配置aop对 controller和它的子包进行拦截

springmvc中的配置

<!--xml头部配置需要有这几行代码-->
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd


<aop:aspectj-autoproxy proxy-target-class="true" />
<bean id="logAopAction" class="com.um.framework.baseware.webadmin.modules.controller.core.LogAopAction"/>
<!--aop执行操作的类-->
package com.um.framework.baseware.webadmin.modules.controller.core;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class LogAopAction {
    //配置接入点,如果不知道怎么配置,可以百度一下规则
     @Pointcut("execution(* com.um.framework.baseware.webadmin.modules.controller..*.*(..))")  
     private void anyMethod(){
         System.out.println("log记录------------------------");
     }//定义一个切入点
     
     @Before("anyMethod() && args(name)")
        public void doAccessCheck(String name){
            System.out.println(name);
            System.out.println("前置通知--------------------------");
        }
        
        @AfterReturning("anyMethod()")
        public void doAfter(){
            System.out.println("后置通知-------------------------");
        }
        
        @After("anyMethod()")
        public void after(){
            System.out.println("最终通知---------------------------");
        }
        
        @AfterThrowing("anyMethod()")
        public void doAfterThrow(){
            System.out.println("例外通知-----------------------------------");
        }
        
        @Around("anyMethod()")
        public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{
            System.out.println("进入环绕通知------------------------------");
            Object object = pjp.proceed();//执行该方法
            System.out.println("退出方法--------------------");
            return object;
        }
}

 

posted on 2016-10-19 17:03  蝈蝈大王  阅读(4639)  评论(1编辑  收藏  举报