首页 > 其他分享 >spring AOP

spring AOP

时间:2022-11-21 19:26:09浏览次数:38  
标签:连接点 spring AOP 切面 关注点 拦截 横切

一、什么是AOP

AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处的无关的代码被称为横切(cross cutting),在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。

AOP技术恰恰相反,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect [ˈæspɛkt]",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

使用"横切"技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

二、AOP核心概念

1、横切关注点

对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点

2、切面(aspect)

类是对物体特征的抽象,切面就是对横切关注点的抽象

3、连接点(joinpoint)

被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器

4、切入点(pointcut)

对连接点进行拦截的定义

5、通知(advice)

所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

6、目标对象

代理的目标对象

7、织入(weave)

将切面应用到目标对象并导致代理对象创建的过程

8、引入(introduction)

在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

标签:连接点,spring,AOP,切面,关注点,拦截,横切
From: https://www.cnblogs.com/jspider/p/16912899.html

相关文章

  • Spring-IoC中Set和构造器注入
     新建Maven工程  修改pom文件1<?xmlversion="1.0"encoding="UTF-8"?>2<projectxmlns="http://maven.apache.org/POM/4.0.0"3xmlns:xsi="http......
  • 【Spring Cloud实战】Eurake服务注册与发现
    gitee地址:https://gitee.com/javaxiaobear/spring-cloud_study.git什么是服务治理?SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。在传统的rpc远程调......
  • 【Logback+Spring-Aop】实现全面生态化的全链路日志追踪系统服务插件「SpringAOP 整合
    承接前文针对于上一篇【Logback+Spring-Aop】实现全面生态化的全链路日志追踪系统服务插件「Logback-MDC篇」的功能开发指南之后,相信你对于Sl4fj以及Log4j整个生态体系的功......
  • Spring Data(数据) LDAP
    版本3.0.0SpringDataLDAP使构建使用轻量级目录访问协议(LDAP)的基于Spring的应用程序变得更加容易。本文档是Spring数据的参考指南-文档支持。它解释了文档模块的概念......
  • Spring Data (数据)MongoDB(二)
    10.6.查询文档您可以使用theandclasses来表达您的查询。它们具有反映本机MongoDB运算符名称的方法名称,例如,,,等。Theandclasses遵循流畅的API样式,因此您可以将多个方......
  • Spring Data (数据)MongoDB(三)
    10.21.更改流从MongoDB3.6开始,ChangeStreams允许应用程序获得有关更改的通知,而无需跟踪oplog。更改流支持仅适用于副本集或分片集群。更改流可以与命令式和反应式MongoDB......
  • 基于纯XML的AOP开发
    需求:使用AOP对转账案例进行优化,业务层仅保留核心业务,事务的控制使用AOP来完成新建maven项目, 步骤分析1.导入依赖(pom.xml)spring-contextspring-aop(被spring-con......
  • 在 Spring 生态中玩转 RocketMQ
    本文作者:饶子昊-SpringCloudAlibabaCommitter,阿里云智能开发工程师。01Spring生态介绍根据JVMEcoSystemReport2021最新数据显示,Spring框架的使用者占比超......
  • Spring Redis 模糊查询匹配key
    背景原方法在Redis内存储条数过多时效率较低,尝试进行改良。修改模糊查询方式后有效提高查询效率。改良步骤原方法原模糊查询方法采用ScanOptions匹配key的前缀,但并未设......
  • Spring OrderUtils工具的使用
    源码地址源码阅读仓库:[SourceHot](https://github.com/SourceHot/spring-framework-read)org.springframework.core.annotation.OrderUtils主要方法如下getOrdergetP......