首页 > 编程语言 >Spring —— AOP(面向切面编程)

Spring —— AOP(面向切面编程)

时间:2022-11-12 01:11:07浏览次数:45  
标签:对象 Spring 切入点 bean 切面 AOP 方法

AOP(Aspect Oriented Programming)简介

  • 面向切面编程,一种编程范式,指导开发者如何组织程序结构
  • 作用:在不惊动原始设计的基础上为其进行功能增强
  • Spring理念:无入侵式/无侵入式

  

 

AOP核心概念

  

  • 连接点(JoinPoint):程序执行过程中的任意位置,粒度为执行方法、抛出异常、设置变量等
    • 在SpringAOP中,理解为方法的执行
  • 切入点(Pointcut):匹配连接点的式子
    • 在SpringAOP中,一个切入点可以只描述一个具体方法,也可以匹配多个方法
      • 一个具体方法:com.cqupt.dao包下的BookDao接口中的无形参无返回值的save方法
      • 匹配多个方法:所有的save方法,所有的get开头的方法,所有以Dao结尾的接口中的任意方法,所有带有一个参数的方法
  • 通知(Advice):在切入点处执行的操作,也就是共性功能
    • 功能最终以方法的形式呈现
  • 通知类:定义通知的类
  • 切面(Aspect):描述通知与切入点的对应关系

 

AOP入门案例

  

 

  

  

  

  

  

  

 

AOP 工作流程

  1、Spring容器启动

  2、读取所有切面配置中的切入点

  3、初始化bean,判定bean对应的类中的方法是否匹配到任意切入点

    *匹配失败,创建对象

    *匹配成功,创建原始对象(目标对象)的代理对象

  4、获取bean执行方法

    *获取bean,调用方法并执行,完成操作

    *获取的bean是代理对象时,根据代理对象的运行模式运行原始方法与增强内容,完成操作

 

AOP 核心概念

  • 目标对象(Target):原始功能去掉共性功能对应的类产生的对象,这种对象时无法直接完成最终工作的
  • 代理(Proxy):目标对象无法直接完成工作,需要对其进行功能回填,通过原始对象的代理对象实现

 

AOP 切入点表达式

  • 切入点:要增强的方法
  • 切入点表达式:要进行增强的方法的描述方式

  

  • 切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类/接口名.方法(参数)异常名)

  

  • 可以使用通配符描述切入点,快速描述

  

  

标签:对象,Spring,切入点,bean,切面,AOP,方法
From: https://www.cnblogs.com/1873cy/p/16853016.html

相关文章

  • Spring 事务扩展及分布式事务可见性问题
      大家注意点,这个@Transactional其实在两种情况下会失效的:第一种就是:在方法内调用的时候,因为它没有经过Bean的代理,所以它没办法依赖Spring的AOP增强去进行事务的控......
  • 【SpringBoot 技术专题】「开发实战系列」Undertow web容器的入门实战及调优方案精讲
    Undertowweb容器Undertow介绍Undertow是红帽公司开发的一款基于NIO的高性能Web嵌入式服务器,红帽公司(RedHat)的开源产品,且是WildFly8(JBoss)默认的Web服务器.;官网API......
  • 简单进行Springboot Beans归属模块单元的统计分析方法
    简单进行SpringbootBeans归属模块单元的统计分析方法背景基于Springboot的产品变的复杂之后启动速度会越来越慢.公司同事得出一个结论.beans数量过多会导致启动速......
  • 8、Redis整合SpringBoot
    1、依赖导入<!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-......
  • 03-SpringBoot 静态资源访问
    静态资源访问类路径的根路径/拓展知识:类路径的根路径/是什么?答:简单来说,可以认为文件夹所代表的路径就是类路径的根路径。.静态资源目录(路径)基本介绍Bydefa......
  • SpringBoot整合Thymeleaf(十三)
    二八佳人体似酥,腰间仗剑斩愚夫。虽然不见人头落,暗里教君骨髓枯。上一章简单介绍了SpringBoot整合Velocity(十二)如果没有看过,​​请观看上一章​​一.Thymeleaf的介绍Thym......
  • 【框架】SpringBoot
    SpringBoot基础基本工程快速建立SpringBoot工程(SpringIntailizr)工程结构application.properties配置文件templates放web页面static静态资源css、js文件......
  • SpringMVC-解析@RequestParam参数
    InvocableHandlerMethod.invokeForRequest执行请求时会调用InvocableHandlerMethod.getMethodArgumentValues解析方法参数。InvocableHandlerMethod.getMethodArgumentVal......
  • spring中有多少种IOC容器
    BeanFactory:就像一个包含bean集合的工厂类,它会在客户端要求实时实例化bean。ApplicationContext:接口扩展了BeanFactory接口,它在BeanFactory基础上提供了一些额外的功能。B......
  • Spring bean容器的生命周期是什么样的?
    springbean容器的生命周期流程如下:1.spring容器根据配置中的bean定义中实例化bean。2.spring使用依赖注入填充所有属性,如bean中所定义的配置。3.如果bean实现BeanNameAware......