AOP的学习(1)

AOP

理解AOP编程思想(面向方法、面向切面)

spring AOP的概念

  •     方面 -- 功能
  •     目标 -- 原有方法
  •     通知 --  对原有方法增强的方法
  •     连接点 -- 可以用来连接通知的地方(方法)
  •     切入点 -- 将用来插入通知的地方(方法)
  •     织入 -- 将通知插入切入点的过程
  •     切面 -- 通知 切入点 织入的总称

使用spring框架实现AOP编程

1.配置文件中,在文件头,加上AOP的命名空间

1ff8a12c22072dd6fe6107f73536061f581.jpg

2.配置AOP标签

aa3ca5a613989007bd1e49ebed7e89e66c7.jpg

spring aop通知(advice)分成五类: 
前置通知[Before advice]:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。 
正常返回通知[After returning advice]:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。 
异常返回通知[After throwing advice]:在连接点抛出异常后执行。 
返回通知[After (finally) advice]:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。 
环绕通知[Around advice]:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。 

006d00acdf74950d11a1ef4feca2a4b6bf5.jpg

7edf1511e3fbb98b04dab4be5c71f9695a6.jpg

AOP原理:

    spring如何实现AOP

    静态代理,弊端,每一个目标,都需要单独写一个代理类,每一个代理类只能代理一个固定的目标,代码量大。

    动态代理,写一个代理类,代理类会产生代理对象,然后这个代理对象,可以代理任何一个对象和目标。

    JDK动态代理:    只能用于面向接口变成的对象,目标类一定是实现了某个接口的。通过生成代理类,实现和目标类一样的接口,重写接口方法,来完成代理。

    cglib动态代理:   cglib api,它适合代理没有面向接口编程的目标类,通过继承目标类,产生子类,重写父类方法的方式,实现代理。

cc6535c18f5212e45ed202ce8b34c4b0f55.jpg

spring AOP根据上面的两行代码,识别该目标类,是否是面向接口编程的,从而选择不同的动态代理方式,创建代理类。

 

 

 

转载于:https://my.oschina.net/xiaoyoung/blog/3042601

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值