Spring(二)------基于aspectj配置文件和注解实现AOP

AOP面向切面编程,增加功能不需要修改源代码实现

底层原理

在对已经定义好方法的类想要增加功能

(1)纵向抽取机制

再定义一个类,类中写增强方法,然后去继承这个类,在子类中调用父类中写的增强方法。这种方式叫做纵向抽取机制,但是不能从根本解决问题。父类中的方法修改名字,子类中也要修改源代码。

(2)横向抽取机制

就是AOP切面编程,分为两种情况。

当要增强的类中有实现的接口,则借助jdk动态代理,即创建代理和增强类的对象的平级对象

当要增强的类没有实现接口,借助cglib动态代理,创建要增强类的子类的代理对象,在子类中调用父类的方法完成增强

基本术语

连接点(joinpoint):增强类中定义的方法,或者说可以被增强的方法

切点(pointcut):实际被增强的方法 

增强/通知(advice):要添加功能的实现,分为前置通知,后置通知,环绕通知,异常通知,最终通知(在后置之后执行)

切面(aspect):把增强用在切点的过程叫做切面

引介(introduction):可以在运行期动态的增加一些方法或者属性

目标对象(target):被增强的类

织入(weaving):把增强应用到目标的过程,把advice应用到target的过程

代理(proxy):一个类被AOP织入增强后就产生一个结果代理类

Aspectj框架

是一个面向切面的框架,与spring配合使用,实现AOP(spring2.0以后增加对aspectj的支持)

使用aspectj实现AOP有两种方式 

  • 基于aspectj的xml配置文件 

        

表达式配置切点

使用execution表达式配置切点execution(<访问修饰符><返回类型><方法名>(<参数>)<异常>)

execution(* xidian.lili.anno.Book.add(..))

execution(* xidian.lili.anno.Book.*(..))//增强book中的所有方法

execution(* *.*(..))//所有类的方法

execution(* save*(..))//增强以save开头的方法

配置增强类型

代码:

 配置文件:

  • 基于aspectj的注解

首先创建增强类Mybook和被增强类Book,在spring配置文件中创建两个类的对象,这些步骤与上述一致

然后在配置文件中开启aop操作

然后就是在增强类中添加注解

即可实现 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值