spring之面向切面编程AOP概述

AOP(面向切面编程)是对OOP的补充,用于将系统服务如日志、事务管理等交叉业务代码从核心业务中分离,提高代码复用性和维护性。文章介绍了AOP的基本概念,包括连接点、切点、通知、切面、织入和代理,并详细讲解了切点表达式的语法。Spring的AOP实现基于动态代理,能灵活选择JDK或CGLIB。
摘要由CSDN通过智能技术生成


前言

AOP(Aspect Oriented Programming)面向切面编程,是一种编程技术。
AOP是对OOP(面向对象)的补充延伸。
AOP底层使用的就是动态代理实现的。
Spring的AOP使用的动态代理是:JDK动态代理+CGLIB动态代理技术,Spring在这两种动态代理中灵活切换,如果是代理接口,会默认使用JDK动态代理,如果要代理某个类,这个类没有实现接口,就会切换使用CGLIB。当然,也可以强制通过一些配置让Spring只使用CGLIB。


一、介绍AOP

将与业务逻辑无关的(非业务逻辑)代码,单独的提取出来,形成一个横向的切面,独立的组件。核心业务是纵向的,然后把横向的切面以横向交叉的方式应用到业务流程当中的过程叫做面向切面编程。

一般一个系统当中都会有一些系统服务,例如:日志、事务管理、安全等。这些系统服务被称为:交叉服务
如果在每一个业务处理过程当中,都掺杂这些交叉代码进去的话,存在两方面问题:

  • 第一:交叉业务代码在多个业务流程中反复出现,显然这个交叉业务代码没有得到复用。并且修改这些业务代码的话,需要修改多处。
  • 第二:程序员无法专注核心业务代码的编写,在编写核心业务代码的同时还要处理这些交叉业务。
    使用AOP可以很轻松解决以上问题

在这里插入图片描述
将与核心业务无关的代码独立的抽取出来,形成一个独立的组件,然后以横向交叉的方式应用到业务流程当中的过程被称为AOP

AOP 的优点:
第一:代码复用性增强
第二:代码易维护
第三:使开发者关注业务逻辑

二、面向切面编程的七大术语

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

三、切点表达式

切点表达式用来定义通知往哪些方法上切入

切入点表达式语法格式:

execution([访问控制权限修饰符] 返回值类型 [全限定类名] 方法名(形式参数列表) [异常])

访问控制权限修饰符:
写public就表示只包括公开的方法
没写,就是4个权限都包括
可选项

返回值类型:
必须填
*表示返回值类型任意

全限定类名:
可选项
两个点“…”表示当前包以及子包下的所有类
省略时表示所有的类

方法名:
必填项
表示所有的方法
set
表示所有的set方法

形式参数列表
必填项
()表示没有参数的方法
(…)参数类型和个数随意的方法
()只有一个参数的方法
(
,String)第一个参数类型随意,第二个参数是String的

异常:
可选项
省略时表示任意类型的异常


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值