SpringAOP实现

2018-06-24  本文已影响17人  游牧族人

实现方式一:

引入spring项目必须的AOP包,其次还需要引入aspectjweaver包。
定义spring容器管理的切面类:

@Aspect
@Component
public class StudentAspect {
    private static Logger logger = LogManager.getLogger(StudentAspect.class.getName());

     //定义切点
    @Pointcut("execution(* service.StudentService.deleteStudentBySid(..))")   
    public void delStudentBySid(){}
    @Pointcut("execution(* service.StudentService.addStudent(..))")
    public void addStudent(){}

    //定义切面方法  其中JoinPoint为切点对象,我们可以通过此对象取得切点参数值等信息
    //returning定义了切点方法返回值
    @AfterReturning(value = "delStudentBySid()",returning = "returnValue")
    public void delStudentBySidLog(JoinPoint jp,boolean returnValue){
        logger.info("学生: (Id)"+jp.getArgs()[0]+" 已经被删除");
    }

    @AfterReturning(value = "addStudent()",returning = "returnValue")
    public void addStudentLog(JoinPoint jp,boolean returnValue){
        Student student = (Student) jp.getArgs()[0];
        logger.info("新增学生:"+student.getSname());
    }

    @AfterThrowing(value = "delStudentBySid()",throwing = "ex")
    public void delStudentBySidExceptionLog(JoinPoint jp,Exception ex){
        logger.info("学生: (Id)"+jp.getArgs()[0]+" 删除异常");
    }

    @AfterThrowing(value = "addStudent()",throwing = "ex")
    public void daddStudentExceptionLog(JoinPoint jp,Exception ex){
        Student student = (Student) jp.getArgs()[0];
        logger.info("学生: "+student.getSname()+"添加异常");
    }
}

上一篇 下一篇

猜你喜欢

热点阅读