首页 > 其他分享 >Spring AOP详解

Spring AOP详解

时间:2023-08-12 18:37:19浏览次数:40  
标签:增强 处理 Spring 切入点 详解 切面 AOP 方法

1. AOP编程介绍

OOP:面向对象编程,以对象为中心,进行程序的设计和开发。

AOP:面向切面编程,以程序中的切面为中心,进行程序的设计和开发。可以把业务功能和非业务功能进行分离。

实现AOP编程的方式:

1)动态代理模式

2)使用Spring的AOP模块

3)AspectJ:专业的切面框架

切面:程序中,一些通用的功能和方法或一些非业务的功能。

Spring AOP详解_Spring AOP

AOP的核心思想:在不修改原代码的基础上,增加新的功能。

Spring AOP详解_Spring_02

切面:程序中,通用的功能或方法

增强处理:在原方法基础上,额外增加的功能

切入点:要进行增强处理的方法

连接点:用于在切面和切入点,用于传输数据的对象

目标对象:切入点所在的对象

AOP代理:用于组织切入点和切面代码的第三方类

织入:把切面和切入点绑定在一起

增强处理分类:

前置增强:在方法执行前,运行的增强功能

后置增强:在方法执行后,运行的增强功能

异常抛出增强:在方法执行出现异常时,运行的增强功能,只有异常监控功能,不具备异常处理能力

最终增强:作用类似于异常处理的finally语句块,不管方法执行是否出现异常,都会执行

环绕增强:可以在方法前后,增加新的功能,甚至可以控制方法是否执行。

Spring AOP详解_Spring_03

Spring AOP详解_Spring AOP_04


1.1 使用AOP的步骤

第一步:编写增强处理类,定义增强处理的方法:

Spring AOP详解_Spring_05

第二步:在Spring配置文件中,导入AOP命名空间,定义切入点,给切入点织入增强处理:

Spring AOP详解_增强处理_06

第三步:启动测试类,调用类中的方法,查看运行的结果:

Spring AOP详解_AOP_07

1.2 异常抛出增强

Spring AOP详解_增强处理_08

1.3 最终增强

Spring AOP详解_Spring_09

1.4 环绕增强

Spring AOP详解_Spring_10

1.5 AOP使用总结

第一步:定义增强处理和增强处理方法:

Spring AOP详解_Spring_11

Spring AOP详解_Spring_12

第二步:在配置文件中,给切入点,织入增强处理,不同的增强处理,使用不同标签进行织入

Spring AOP详解_Spring AOP_13

1.6 使用注解配置AOP

第一步:编写增强处理类,给类和方法添加注解:

Spring AOP详解_Spring_14

Spring AOP详解_AOP_15

Spring AOP详解_Spring AOP_16

1.7 两种AOP配置方式总结

Spring AOP详解_Spring_17


标签:增强,处理,Spring,切入点,详解,切面,AOP,方法
From: https://blog.51cto.com/u_16222207/7060559

相关文章

  • Spring IOC介绍及其使用
    1. SpringIOCCoreContainer:核心容器(Spring容器,IOC容器)1.1 IOC容器IOC容器:控制反转容器,对象的实例化和赋值的控制权,从硬编码转移到了容器中。从思想层面,解释容器的作用。反转:某些事情,自己不做,交给别人去做,把执行的结果,拿来直接用。正转:自己的事情,自己做DI:依赖注入,从功能角度,解......
  • IDEA集成docker并快速部署Springboot项目
    前言:现在docker是我们常用的服务部署方式了,在微服务中对于springboot部署到docker一般有两种方式1、把jar包扔给运维同学,由他们进行编写dockerfile或者其他方式部署。(不推荐)2、由开发同学处理后把镜像或者容器上传到服务器(企业级常用方式)下面我们就通过demo来看下方式二......
  • SpringBatch读取mysql数据
    1.在本地数据库创建user表建表语句:createtable`user`(`id`bigintnotnullauto_incrementcomment'主键',`name`varchar(32)defaultnullcomment'用户名',`age`intdefaultnullcomment'年龄',primarykey(id))engine=innodbde......
  • Java中的String方法详解
    (String方法)先进行专栏介绍本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记进行适当修改。希望能对大家能有所帮助,同时也是请大家对我进行监督,对我写的代码进行建议,互相学习。String详解Java中的String是一个不可变的字符序......
  • springboot集成log4j2日志
    目录Maven依赖log4j2.xml配置注释测试参考Maven依赖参考:https://docs.spring.io/spring-boot/docs/2.7.14/reference/htmlsingle/#howto.logging.log4j <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</a......
  • Python模块学习:subprocess模块详解
    一.subprocess模块subprocess是Python2.4中新增的一个模块,它允许你生成新的进程,连接到它们的input/output/error管道,并获取它们的返回(状态)码。这个模块的目的在于替换几个旧的模块和方法,如:os.systemos.spawn*1.subprocess模块中的常用函数函数描述subprocess.ru......
  • Springboot - 员工部门案例
    目录查询全部部门信息查询全部部门信息//知识点1:@RequestMapping(value="/list",method=RequestMethod.GET)等价于:@GetMapping("/list")//知识点2:privatestaticLoggerlogger=LoggerFactory.getLogger(DeptController.class);等价于@Slf4j(lombok.extern.slf......
  • Spring:登录功能如何做
    前言今天是2023年8月12号,周六,今天不用上班,只是前几天得知消息我前项目组的同事们被裁员,说不定哪个明天就轮到我了吧,所以今天过来公司,研究下公司项目架构,离职的时候带点东西也不算亏说回登录,我还未工作前,行内人一直告诉我登录功能很简单应届生应该都应该会,可工作两年的我发现,登录......
  • SpringBoot3数据库集成
    标签:Jdbc.Druid.Mybatis.Plus;一、简介项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,而对于这个功能的实现,其组件选型也非常丰富;通过如下几个组件来实现数据库的整合;Druid连接池:阿里开源的数据库连接池,并且提供SQL执行的监控能力;MybatisPlus框架:基于Mybatis框......
  • SpringBoot3数据库集成
    标签:Jdbc.Druid.Mybatis.Plus;一、简介项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,而对于这个功能的实现,其组件选型也非常丰富;通过如下几个组件来实现数据库的整合;Druid连接池:阿里开源的数据库连接池,并且提供SQL执行的监控能力;MybatisPlus框架:基于Mybatis......