文章目录

  • 开启自动织入支持
    • 在XML中开启
    • 通过注解开启
      • 注解方式入口类
      • 注解方式定义切面类
        • Spring的注解的AOP的通知类型
          • 环绕通知@Around
          • @Before:前置通知
          • @AfterReturning:后置通知
          • @AfterThrowing:异常抛出通知
          • @After:最终通知
      • 通过@Pointcut注解定义切入点表达式

开启自动织入支持

在XML中开启

添aop标签

   <aop:aspectj-autoproxy />

开启注解支持,同时强制指定代理机制为cglib

<aop:aspectj-autoproxy proxy-target-class="true" />

通过注解开启

@Configuration
// 开启注解支持,同时强制指定代理机制为cglib
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class MyAOPConf {}
@Component
@Aspect //表示这是一个切面类,里面的方法都是像打印日志等围绕业务方法的方法

注解方式入口类

@Configuration                //相当生成一个XML文件
@ComponentScan(basePackages = "com.lanou3g.spring.simple.say")//扫描路径
@EnableAspectJAutoProxy         //开启对AOP相关注解的处理
public class AppByAnnotation {
...
}

注解方式定义切面类

@Pointcut:切入点的注解
由于@Aspect注解没有让Spring作为组件bean扫描的能力,所以我们需要额外添加@Component注解

@Aspect     // 表示该类是一个切面
@Component  // Aspect切面首先必须也是一个普通的bean
public class MethodInOutAspect {
}

Spring的注解的AOP的通知类型

环绕通知@Around

指定该方法是一个环绕通知,通知注解的参数代表引用一个切入点表达式

    @Around("com.lanou3g.spring.GlobalPointcut.say_all_method()")public Object aroundM(ProceedingJoinPoint joinPoint) throws Throwable {}
    // 获取连接点方法的名称String methodName = joinPoint.getSignature().getName();// 获取连接点方法的参数Object[] args = joinPoint.getArgs();
@Before:前置通知
 @Before("com.lanou3g.spring.GlobalPointcut.say_all_method()")
@AfterReturning:后置通知
@AfterReturning(pointcut = "com.lanou3g.spring.GlobalPointcut.say_all_method()", returning = "ret")
@AfterThrowing:异常抛出通知
   @AfterThrowing(value="execution(* "com.lanou3g.spring.GlobalPointcut.say_all_method()" , throwing="e")
@After:最终通知
   @After("com.lanou3g.spring.GlobalPointcut.say_all_method()")

方法名 功能
Signature getSignature(); 获取封装了署名信息的对象,在该对象中可以获取到目标方法名,所属类的Class等信息
Object[] getArgs(); 获取传入目标方法的参数对象
Object getTarget(); 获取被代理的对象
Object getThis(); 获取代理对象
Object proceed() throws Throwable 执行目标方法
Object proceed(Object[] var1) throws Throwable 传入的新的参数去执行目标方法

通过@Pointcut注解定义切入点表达式

拦截com.lanou3g.spring.simple.say包下所有类(包括子包中所有类)中的所有方法
@Pointcut(“execution(* com.lanou3g.spring.simple.say….(…))”)
public void say_all_method() {}

Spring AOP(面向切面) 注解使用方法相关推荐

  1. Java绝地求生—Spring AOP面向切面编程

    Java绝地求生-Spring AOP面向切面编程 背景 动态代理 构建被代理对象 自动生成代理 调用动态代理 Spring方法 方式一:使用Spring的API接口 方式二:使用自定义类 方式三:使 ...

  2. Spring AOP(面向切面编程)

    AOP(Aspect Oriented Programming),也就是面向切面编程,作为面向对象编程的一种补充,AOP已经成为一种比较成熟的编程方式.可以这样理解:OOP是从静态角度考虑程序结构,而 ...

  3. Spring AOP面向切面编程

    AOP面向切面编程: AOP(Aspect Oriented Programming),即面向切面编程,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公 ...

  4. Spring AOP 面向切面编程相关注解

    Aspect Oriented Programming 面向切面编程 在Spring中使用这些面向切面相关的注解可以结合使用aspectJ,aspectJ是专门搞动态代理技术的,所以比较专业. 需要在 ...

  5. Spring Aop面向切面编程自动注入

    1.面向切面编程 在程序原有纵向执行流程中,针对某一个或某一些方法添加通知,形成横切面的过程叫做面向切面编程 2.常用概念 原有功能:切点,pointcut 前置通知:在切点之前执行的功能,befor ...

  6. Spring AOP 面向切面编程

    AOP 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件 ...

  7. java框架013——Spring AOP面向切面编程

    一.Spring AOP简介 AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程).它是面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编 ...

  8. JavaEE——Spring AOP(面向切面编程)

    目录 1.面向切面编程(AOP) 2.AOP术语 3.AOP类型 4.AOP 的优势 5.Spring AOP 的代理机制 6.Spring AOP 连接点 7.Spring AOP 通知类型 8.基 ...

  9. Spring AOP面向切面编程:理解篇(一看就明白)

    一直想着怎么去通俗的讲解AOP,看了一篇文章受到了启发(https://blog.csdn.net/qukaiwei/article/details/50367761),下面我加入自己的理解,咱们来说 ...

  10. Spring aop面向切面编程概述

    aop概述 1.AOP为Aspect Oriented Programming的缩写,意为:面向切面编程.将程序中公用代码进行抽离,通过动态代理实现程序功能的统一维护的一种技术.使代码耦合性降低,提高 ...

最新文章

  1. 揭秘大型网站架构进化之路
  2. 华三交换机mode是什么意思_交换机中相关术语代表什么意思,有必要弄清楚,赶紧收藏...
  3. 索泰显卡超频软件测试要多少时间,索泰显卡专用超频软件_FireStorm显卡超频 V2.0.1 官方版...
  4. 开发自上而下的Web服务项目
  5. C---编写程序:实现一个随堂测试,能进行加减乘除运算。要求如下:(1)随机产生两个1~10的正整数,在屏幕上输出题目,如:5+3=?(2)学生输入答案,程序检查学生输入答案是否正确,若正确,
  6. 手摸手教你阅读和调试大型开源项目 ZooKeeper
  7. SecureCRT 终端仿真程序 v7.0.0.326 中文绿色便携破解版
  8. VM8无intnet访问权限
  9. 免费天气API,天气JSON API,天气插件
  10. 电脑插入头戴式耳机后声音依然外放
  11. 面试了一位 阿里出来的46 岁的程序员,思绪万千,最后结局居然...
  12. Win10文件或目录损坏且无法读取修复方法
  13. UA OPTI544 量子光学1 Maxwell方程与Lorentz Oscillator回顾
  14. macOS使用快捷键控制安卓手机音乐播放器
  15. mysql 计算农历_MySQL 获取农历年函数
  16. 【竞赛复盘】2022雪浪算力开发者大赛——阀体异常检测
  17. 微信小程序糟心开发过程
  18. NWPU-Crowd
  19. 【Proteus仿真】【51单片机】智能雨刷器设计
  20. ubuntu系统根目录下各个目录用途说…

热门文章

  1. 德国AI“算个球”:西班牙是冠军,只要别让德国进八强(严谨推理)
  2. 【计算机图形学 】绘制椭圆 | OpenGL+鼠标交互
  3. 使用VS2019将c#生成dll文件
  4. 计算机病毒蓝屏,电脑中病毒造成蓝屏怎么解决
  5. Aristocracy, Democracy, and System Design 读书笔记
  6. 魔兽地图编辑器 简单介绍
  7. Nginx实现文件共享
  8. RT-Thread 学习文档
  9. 小米 root 国际版 Xposed 刷机
  10. 世界五百强面试题计算机,世界五百强IT企业最新C++经典面试题及答案