Spring AOP(面向切面编程)简介说明

转自:

Spring AOP(面向切面编程)简介说明

AOP:“Aspect Oriented Programming”,即面向切面编程,和 OOP(面向对象编程它是一种全新的编程思想
AOP的核心是采用(动态代理)会方法增强相应的功能,
使用AOP可减少代码的重复,为代码扩展带来了遍历性,常见的应用如:
事务处理、日志管理、权限控制、异常处理等
AOP的主要功能: 分离功能性需求和非功能性需求,
使开发人员可以集中处理某一个关注点或者横切逻辑,减少对业务代码的侵入,增强代码的可读性和可维护性


通俗的讲:
AOP可以在不改变源代码的情况下,为业务块添加一种通用的功能,AOP底层是借助代理模式进行实现
目前比较流行的AOP框架有两个: 一、Spring AOP 二、AspectJ

Spring AOP:

是基于AOP编程模式的一个框架,它能够有效的减少系统间的重复代码,达到松耦合的目的
Spring AOP 使用纯 Java 实现,无需使用其它的类加载器, 是使用代理方式向目标类植入增强的代码
目前有两种方式实现:
基于接口的 JDK 动态代理和基于继承的 CGLIB 动态代理。

AspectJ:

是一个基于 Java 语言的 AOP 框架,从 Spring 2.0 开始,Spring AOP 引入了对 AspectJ 的支持
AspectJ 扩展了 Java 语言,提供了一个专门的编译器,在编译时提供横向代码的植入

为什么使用AOP

AOP变成模式,可在实际逻辑运行之前,之后,或周围等一些关注点上,运行指定的代码,如下例所示:

class javaTest{ 
    public void a1(){...} 
    public void a2(){...} 
    public void a3(){...}  
    public void b1(){...} 
    public void b2(){...} 
    public void b1(){...} 
    public void c1(){...} 
    public void c2(){...} 
}

想实现在使用a开头的方法上添加发送通知的功能, 
在以前没有AOP时,我们需修改a开头方法的代码,
那么今天有了AOP,我们可以在不修改源代码的情况下对方法进行增加,这就是我们需使用AOP的原因

AOP常见术语

名称说明
Joinpoint(连接点)指那些被拦截到的点,在 Spring 中,指可以被动态代理拦截目标类的方法
Pointcut(切入点)指要对哪些 Joinpoint 进行拦截,即被拦截的连接点
Advice(通知)指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容
Target(目标)指代理的目标对象
Weaving(植入)指把增强代码应用到目标上,生成代理对象的过程
Proxy(代理)指生成的代理对象
Aspect(切面)切入点和通知的结合
Advice直译为通知,也有的资料翻译为“增强处理”,共有 5 种类型,如下表

增强处理的类型

通知说明
before(前置通知)通知方法在目标方法调用之前执行
after(后置通知)通知方法在目标方法返回或异常后调用
after-returning(返回后通知)通知方法会在目标方法返回后调用
after-throwing(抛出异常通知)通知方法会在目标方法抛出异常后调用
around(环绕通知)通知方法会将目标方法封装起来
通过以上的学习,我们可了解到AOP编程方式可对业务逻辑的各部分进行隔离,
使业务逻辑之间的耦合对降低,增强代码的可重用性,同时提高开发效率,
是Spring的核心
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值