Spring笔记(3) —— 面相切面编程(aspect of programming)

将复杂的需求分解出不同方面,将散布在系统中的公共集中解决。

面向切面编程,是一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术

OOP:针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分

AOP:针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或者阶段,以获得逻辑过程中各部分之间低耦合的隔离效果。这两种设计思想在目标上有着本质的差异


1)核心关注点——注重于与商务逻辑,业务需求相关的功能模块

2)横切关注点——诸如日志(Logging),安全性(Security),持久化(persistence)这些共同需要的功能模块。


而AOP则是将横切关注点从核心关注点中分离出来,


代理模式

反射机制


1)静态代理模式


2)动态代理模式

代理类通过实现接口来说进行代理(JDK内置的InvocationHandler或者CGLIB)

绑定委托类(目标类) 

public Object bind(Object target,Logging  logging){
this.target=target;  
this.logging=logging;
return Proxy.newProxyInstance(target.getClass().getClassLoad(),target.getClass().getInterface(),this);
}

AOP

1)Aspect 切面

2)Joinpoint 连接点

3)advice 通知

4)Pointcut 切入点

5)Target Object 目标对象

6)Proxy AOP代理

7)  Weaving 织入

8)Introduction 引入


通知类型 (增强处理类型):

1)Before  :前置增强处理,在目标方法前织入增强处理

2)After Returning :  后置增强处理,在目标方法正常执行(不出现异常)后织入增强处理

3)After Throwing  :异常增强处理,在目标方法抛出异常后织入增强处理

4)After (finally) : 最终增强处理,不论方法是否抛出异常,都会在目标方法最后织入增强处理

5)Around  : 环绕增强处理,在目标方法的前后都可以织入增强处理


</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值