面向切面编程(AOP)

* 面向切面编程 AOP 
loC 使软件组件松耦合。 AOP 让你能够捕捉系统中经常使用的功能,把它转化成组件。
 AOP ( Aspect Oriented Programming ):面向切面编程,面向方面编程。( AOP 是一种编程技术)
 AOP 是对 OOP 的补充延伸。
 AOP 底层使用的就是动态代理来实现的。
 Spring 的 AOP 使用的动态代理是: JDK 动态代理+ CGLIB 动态代理技术。 Spring 在这两种动态代理中灵活切换,如果是代理接口,会默认使用 JDK 动态代理,如果要代理某个类,这个类没有实现接口,就会切换使用 CGLIB 。当然,你也可以强制通过一些配置让 Spring 只使用 CGLIB

* AOP介绍
一般一个系统当中都会有一些系统服务,例如:日志、事务管理、安全等。这些系统服务被称为:交叉业务
这些交叉业务几乎是通用的,不管你是做银行账户转账,还是删除用户数据。日志、事务管理、安全,这些都是需要做的。
如果在每一个业务处理过程当中,都掺杂这些交叉业务代码进去的话,存在两方面问题:
.第一:交叉业务代码在多个业务流程中反复出现,显然这个交叉业务代码没有得到复用。并且修改这些交叉业务代码的话,需要修改多处。
.第二:程序员无法专注核心业务代码的编写,在编写核心业务代码的同时还需要处理这些交叉业务。
使用 AOP 可以很轻松的解决以上问题。

* 用一句话总结 AOP :将与核心业务无关的代码独立的抽取出来,形成一个独立的组件,然后以横向交叉的方式应用到业务流程当中的过程被称为 aop 。
 AOP 的优点:
 .  第一:代码复用性增强。
.第二:代码易维护。
.第三:使开发者更关注业务逻辑。

* AOP的七大术语
.连接点 Joinpoint :在程序的整个执行流程中,可以织入切面的位置。方法的执行前后,异常抛出之后等位置。
.切点 Pointcut :在程序执行流程中,真正织入切面的方法。(一个切点对应多个连接点)
.通知 Advice :
           通知又叫增强,就是具体你要织入的代码。
                   * 通知包括:
                          .前置通知
                          .后置通知
                          .环绕通知
                          .异常通知
                          .最终通知
 .切面 Aspect :切点+通知就是切面。
.织入 Weaving :把通知应用到目标对象上的过程。
.代理对象 Proxy :一个目标对象被织入通知后产生的新对象。
.目标对象 Target :被织入通知的对象。
 

你可能感兴趣的:(java,开发语言)