aop-总结

aop
面向切面编程(代理模式, spring的实现)
在不改变原有代码的基础上扩展功能
加日志
事务管理

aop的概念

aop涉及到的几个关键名词
target: 目标
想要拓展功能的对象
joinpoint: 连接点
目标类下的所有方法都是连接点
pointcut: 切点
所期望增强的方法
切入点表达式
一个带通配符方法签名
advice: 通知
拓展的方法
aspect: 切面
通知所在的类

aop的入门案例(给UserDao下的所有方法添加一个日志功能)
1.导入jar包
4+1
2+2
aop
aopalliance
aspects
aspectjweaver

2.定义目标类(UserDao) 和切面类(日志切面)
3.创建spring的配置文件
a.引入约束: beans aop
b.声明bean
c.配置aop
配置aop
1.声明切点并给定一个id
2.配置切面(通知 + 切点)
指定某个切面: aspect-ref=""
指定通知
确定通知的执行时机:
前置
后置
返回
异常
环绕
指定切点



各个通知的参数
非环绕通知:JoinPoint:
该对象封装了切入点的信息(参数,方法名)
环绕通知: ProceedingJoinPoint
封装了切点的方法

环绕通知的用法:
1.ProceedingJoinPoint参数必须传
2.pjp必须调用一次 proceed()方法, 该方法有一个Object类型的返回值
3.必须将切点的返回值(就是proceed方法的返回值)return出去
4.环绕通知必须有一个Object类型的返回值


执行时机
1.前置通知
2.目标方法(切点)
3.后置通知
4.返回通知 || 异常通知
切入点表达式的写法
* com.cdsxt.dao.UserDao.*    (..)
任意返回类型 + 包名+ 类名 + 方法名 + 参数列表
*: 任意类型
..: 任意参数


    使用注解的方式配置aop
1.导入jar
4+1
2+2
2.定义class 业务类 + 切面类
3.创建spring的配置文件
引入约束
配置包扫描
配置开启aop的动态代理
<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
proxy-target-class="true"取值为true表示强制使用cglib动态代理
4.在类上添加注解
@Component
@Aspect 添加到切面

5.在切面中的方法上添加注解
@Before
@After
.....

使用@Pointcut重用切入点表达式
使用@order指定切面的优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值