Spring AoP学习笔记

public 方法可见性
int 方法返回值
com.cassandra.demo.aspectj.service.Calculator类名全路径
*(…)方法名及参数类型
execution和within的区别
eexcution的控制粒度比wintin小,within只能控制到类级别
args 只控制参数
this 表示的是代理对象的匹配类型
target 目标对象

   @Pointcut("execution(public int com.cassandra.demo.aspectj.service.Calculator.*(..))")
    public void pointCut(){}

Aspect 切面 单例 抽象 使用AspectJ时Aspect就是一个类,使用xml时就是一个标签
JoinPoint连接点,目标对象中的方法 相当于一条记录 PointCut 切入点,连接点的集合 (增强到哪里[com.sevlet...*],什么时候增强) 相当于一张表
目标对象target 原始对象,原来的方法
代理对象proxy 增强后的方法 目标对象变为代理对象的过程称为代理 。JDK代理:接口 CGLIB代理: 类。包含了原始对象的代码和增强后的代码的那个对象
Weaving 织入 目标对象的方法变为代理对象的增强方法的过程称为织入 把代理逻辑加入到目标对象的过程
Advice 通知,由两部分组成,通知的具体内容,在哪里通知
@Before前置通知:在执行目标方法之前运行
@After 在目标方法结束之后运行,不管有没有异常
@AfterReturning目标方法正常返回后运行
@AfterThrowing 目标方法出现异常后运行
@Around 环绕通知 joinPoint.proceed()
@EnableAspectAutoProxy 开启AoP

AoP是一种思想 Spring AoP是AoP的实现 AspectJ也实现了AoP @AspectJ和Spring AoP有什么关系
Spring AoP借助了AspectJ的语法,底层还是自己的实现 @EnableAspectAutoProxy
开启AspectJ的语法支持 Spring AoP是动态织入 运行时织入 AspectJ是静态织入 编译时织入

ProceedingJoinPoint 正在增强的连接点 当前执行增强的方法
JoinPoint虽然是一个方法,但是是作对象描述的,没有invoke方法
ProceedingJoinPoint继承JoinPoint,可以执行目标对象的方法
xml是用来干嘛的:描述元数据
自定义注解
元注解
横切性问题:不会影响主线业务逻辑

JDK动态代理为什么只能代理接口? 在源码里,代理对象继承了Proxy,因为Java单继承多实现的原则,只能使用接口代理
JDK动态代理,代理对象不等于目标对象,代理对象继承了Proxy 实现了目标对象的接口 CGLIB代理 代理对象继承了目标对象

AoP中的Introductions 将com.luban.dao下的类实现Dao接口,具体的方法实现默认实现是IndexDao

@DeclareParents(value="com.luban.dao.*", defaultImpl=IndexDao.class)
 public Dao dao;

Aspect Instantiation Models 实例模型
@Aspect(“perthis(com.luban.dao.IndexDao))”) 为所有代理对象是IndexDao的单独创建一个切面
用来处理部分对象是多例的类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值