Spring-AOP配置文件方式详解

配置:



    
    
    
    

    
    
        
        
        
        
            
            
            
            
            
            
            
            
            
            
        
    

 

切面:

package spring.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import spring.model.User;

public class PermAspect {
    public void preAvice(JoinPoint jp) {
        Object[] args = jp.getArgs();
        System.out.println("执行前置通知---业务参数" + args[0]);
    }

    public void afterAvice(JoinPoint jp) {
        Object[] args = jp.getArgs();
        System.out.println("执行后置通知---业务参数" + args[0]);
    }

    public void returnAvice(JoinPoint jp, Object returnval){
        if (returnval instanceof User) {
            User user = (User) returnval;
            user.setUsername("xxx");
        }
        System.out.println("返回通知----" + returnval);
    }

    public void exceptionAdvice(JoinPoint js, Exception ex) {
        System.out.println("例外通知");
        ex.printStackTrace();
    }

    public Object aroundAdvice(ProceedingJoinPoint jp) {
        Object[] args = jp.getArgs();
        if (args.length > 0) {
            System.out.println("执行环绕通知----" + args[0]);
        }
        System.out.println("执行环绕通知前置通知---业务参数" + args[0]);

        Object o = null;
        try {
            o = jp.proceed();
            System.out.println("执行环绕通知后置通知---业务参数" + args[0]);

        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        return o;
    }
}

 

你可能感兴趣的:(java)