首页 > 其他分享 >AOP(概述)

AOP(概述)

时间:2023-04-29 11:55:43浏览次数:39  
标签:匹配 书写 通知 切入点 概述 AOP 方法

AOP (Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构
OOP (Object Oriented Programming)面向对象编程
作用:在不影响原始设计的基础上为其进行功能增强
Spring理念:无入侵式/无侵入式

连接点(JoinPoint):程序执行过程中的任意位置,粒度为执行方法等,在spring中理解为方法的执行
切入点(Pointcut):匹配连接点的式子,在SpringAOP中,切入点可以描述一个具体方法,也可以匹配多个方法
通知(Advice):在切入点执行的操作,也就是共性功能
切面(Aspect):描述通知与切入点的对应关系

简单案例

AOP工作流程

Spring容器启动 -> 读取所有切面配置(AOP类)中的切入点 -> 初始化bean,匹配失败,创建原始对象(目标对象);匹配成功,创建代理对象

AOP切入点表达式
切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类名.接口名/方法名(参数)异常名)
execution(public User com.itheima.service.UserService.findById(int))

*:单个独立的任意字符
..:多个连续的任意字符
+:匹配子类类型

注意事项

  • 包名书写尽量不使用..匹配,效率过低,常用*做单个包描述匹配,或精准匹配
  • 接口名/类名书写名称与模块相关的采用*匹配,例如UserService书写成*Service,绑定业务层接口名
  • 方法名书写以动词进行精准匹配,名词采用*匹配,例如getById书写成getBy*,selectAll书写成selectAll

AOP通知
前置通知 @Before("切入点方法名")
后置通知 @After("切入点方法名")
环绕通知 @Around("切入点方法名")
返回后通知 @AfterReturning("切入点方法名")
抛出异常后通知 @AfterThrowing("切入点方法名")

AOP通知获取数据
获取切入点方法的参数 JoinPoint:适用于前置、后置、返回后、抛出异常后通知 ProceedJointPoint:适用于环绕通知
获取切入点方法返回值 返回后通知 环绕通知
获取切入点方法运行异常信息 抛出异常后通知 环绕通知



参考文章
https://www.cnblogs.com/jap6/p/10637429.html springAOP中用joinpoint获取切入点方法的参数
https://blog.csdn.net/q982151756/article/details/80513340 细说Spring——AOP详解(AOP概览)

标签:匹配,书写,通知,切入点,概述,AOP,方法
From: https://www.cnblogs.com/llg-/p/17363474.html

相关文章

  • AOP实现将入参与出参写入日志文件中,每天生成一个文件
    LogAspectpackageorg.jeecg.interceptor;importcom.alibaba.fastjson.JSON;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.Around;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Pointcut;i......
  • 8位单片机NY8B062F概述、功能及结构
    NY8B062F是以EPROM作为存储器的8位单片机,专为家电或量测等等的I/O应用设计。采用CMOS制程并同时提供客户低成本、高性能、及高性价比等显著优势。NY8B062D核心建立在RISC精简指令集架构可以很容易地做编程和控制,共有55条指令。除了少数指令需要两个指令时钟,大多数指令都是一个......
  • Spring AOP 和 动态代理技术
     AOP是什么东西首先来说AOP并不是Spring框架的核心技术之一,AOP全称AspectOrientProgramming,即面向切面的编程。其要解决的问题就是在不改变源代码的情况下,实现对逻辑功能的修改。常用的场景包括记录日志、异常处理、性能监控、安全控制(例如拦截器)等,总结起来就是,凡是想对......
  • aop实现日志记录通过自定义注解方式
    切面类切入点引入注解@Pointcut("@annotation(com.test.aop.MyLog)")privatevoidpointcut(){}注解类@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)//指定实现的类型及运行时机public@interfaceMyLog{}在使用的方法上加自定义注解@MyLog方法log.i......
  • Hadoop概述
    Hadoop概述Hadoop是什么hadoop是一个由Apache基金会所开发的分布式系统基础框架其主要解决,海量数据的存储和海量数据的的分析计算问题广义上,Hadoop通常是指一个更加广泛的概念——Hadoop生态圈Hadoop的发展历史Hadoop创始人DougCutting,为了实现与Google类似的全......
  • Redis基础 - 01概述
     一、Redis概述1.1Redis介绍RemoteDictionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统。Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日开......
  • 基于注解方式声明切面(AOP)
    基础知识:【首先启动对@AspectJ注解的支持(蓝色部分):<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/ao......
  • AOP中的概念
    基础知识【Aspect(切面):指横切性关注点的抽象即为切面,它与类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面横切性关注点的抽象.joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法......
  • 使用Spring进行面向切面(AOP)编程
    基础知识:【要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间:<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework......
  • Spring AOP 支持两种模式的动态代理
    SpringAOP支持两种模式的动态代理,JDKProxy或者cglib,jdkproxy:publicclassMyDynamicProxy{publicstaticvoidmain(String[]args){HelloImplhello=newHelloImpl();MyInvocationHandlerhandler=newMyInvocationHandler(hello);......