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
- Spring AOP编程(注解实现)
- Spring AOP实现(注解)
- spring 注解&XML实现AOP编程
- spring(AOP) 注解实现aop
- spring注解实现AOP
- Spring注解实现AOP
- Spring 注解Aop实现
- 【spring】AOP注解实现
- spring 注解实现AOP
- Spring AOP 注解实现
- Spring 面向切面(AOP)编程,注解
- Spring AOP(二、注解配置实现)
- Spring的AOP注解编程
- Spring 通过注解方式实现AOP切面编程
- Spring之注解实现aop(面向切面编程)
- Spring:AOP(四)注解方式实现AOP
- AOP之Spring使用注解方式实现AOP(入门)
- spring AOP(注解)
- 正则表达式短横线"-"的转义写法示例
- iOS UIView动画详解(Swift)
- Above Average
- 在Myeclipse中配置Maven
- qt 中各种常用对话框
- Spring AOP编程(注解实现)
- Nand-Flash/Nor-Flash存储模块设计
- No Brainer
- jQuery中wrap、wrapAll和wrapInner用法以及区别
- 使用VMware VSphere WebService SDK进行开发 (一)——基本信息阐述
- Anti-aliasing and Continuity with Trapezoidal Shadow Maps
- timestamp 和 datetime 的比较
- html5
- 所有的shadow map的名称