Spring AOP编程(注解实现)

来源:互联网 发布:淘宝属性备住怎么说 编辑:程序博客网 时间:2024/05/22 12:24

一、基本概述

Aop(aspect object programming) 面向切面编程
功能: 让关注点代码与业务代码分离!

关注点
重复代码就叫做关注点;

切面
关注点形成的类,就叫切面(类)!

面向切面编程,就是指 对很多功能都有的重复的代码抽取,再在运行的时候网业务方法上动态植入“切面类代码”。

切入点
执行目标对象方法,动态植入切面代码。
可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。

二、所需Jar包

spring-aop-3.2.5.RELEASE.jar   aopalliance.jar               aspectjweaver.jar             aspectjrt.jar

如果是maven项目管理,则添加如下几项。

三、注解解释

@Aspect         指定一个类为切面类       @Pointcut("execution(* cn.itcast.e_aop_anno.*.*(..))")  指定切入点表达式@Before("pointCut_()")      前置通知: 目标方法之前执行@After("pointCut_()")       后置通知:目标方法之后执行(始终执行)@AfterReturning("pointCut_()")      返回后通知: 执行方法结束前执行(异常不执行)@AfterThrowing("pointCut_()")       异常通知:  出现异常时候执行@Around("pointCut_()")              环绕通知: 环绕目标方法执行

四、操作流程

1、有接口实现目标对象

2、无接口实现的目标对象

3、配置

4、AOP切面类

package myaopAnno;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;/** * Created by liguodong on 2015/11/10. */@Component  //加入容器@Aspect     //指定当前类为切面类public class MyAop {    //方式1    //重复执行的代码    //指定切入点表达式:拦截那些方法,即为那些类生成代理对象    /*@Before("execution(* myaopAnno.UserDao.*(..))")    public void begin(){        System.out.println("开始事务/异常");    }    @After("execution(* myaopAnno.UserDao.*(..))")    public void commite(){        System.out.println("提交事务/关闭");    }*/   //方式2   @Pointcut("execution(* myaopAnno.*.*(..))")   public void pointCut_(){   }    @Before("pointCut_()")    public void begin(){        System.out.println("开始事务/异常");    }    @After("pointCut_()")    public void commite(){        System.out.println("提交事务/关闭");    }}

5、测试及运行结果

1 0
原创粉丝点击