广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java spring AOP基础
  • 920
分享到

Java spring AOP基础

2024-04-02 19:04:59 920人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、aop概述二、AOP相关语述三、AOP与动态代理3.1jdk动态代理3.2CGLib动态代理3.3两者对比总结一、AOP概述 AOP,即面向切面编程,简单来说就是将代码中重复

一、AOP概述

AOP,即面向切面编程,简单来说就是将代码中重复的部分抽取出来,在需要执行的时候使用动态代理的技术,在不修改源码的基础上对方法进行增强;AOP也是spring框架的一个重点,利用AOP可以实现业务逻辑各个部分的隔离,从而使得业务逻辑各个部分的耦合性降低,提高程序的可重用性,同时提高开发效率。

二、AOP相关语述

1)连接点(Joinpoint):在程序执行过程中,需要拦截的方法

2)切入点(Pointcut):就是拦截方法设置的规则,连接点的一系列集合

3)通知(advice):增强连接点的实现代码(就是需要为连接点绑定的方法)

通知类型 说明
前置通知(Before) 执行连接点方法之前执行
环绕通知(Around) 环绕连接点方法执行
后置通知(After) 执行连接点方法之后执行
后置返回通知(After Running) 在连接点方法返回结果之后执行,如果方法出现异常则不会执行此通知(通常是最后执行)
异常通知(After Throwing) 在连接点方法抛出异常之后执行

4)目标对象(target):被代理对象,指被通知的对象,也称为被增强对象

5)织入(Weaving):将切面代码插入到目标对象上,从而生成代理对象的过程

6)代理(Proxy):一个类被AOP织入增强后,就产生一个结果代理类

7)切面(Aspect):我们的拦截处理类,封装用于横向插入系统功能(如事务日志等)的类。

三、AOP与动态代理

AOP中的代理可以说是由AOP框架动态生成的一个对象,该对象可以作为目标对象使用。Spring中的AOP有两种方式实现动态代理:JDK动态代理、CGLib动态代理。

3.1 JDK动态代理

JDK动态代理主要涉及java.lang.reflect包下边的两个类:Proxy和InvocationHandler。其中InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态地将横切逻辑和业务逻辑贬值在一起。

具体实现原理:

1)通过实现InvocationHandlet接口创建自己的调用处理器;

2)通过为Proxy类指定ClassLoader对象和一组interface来创建动态代理;

3)通过反射机制获取动态代理类的构造函数,其唯一参数类型就是调用处理器接口类型;

4)通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数参入;

JDK动态代理是面向接口的代理模式,如果被代理目标没有接口那么Spring也无能为力,Spring通过Java的反射机制生产被代理接口的新的匿名实现类,重写了其中AOP的增强方法。

3.2 CGLib动态代理

CGLib采用底层的字节码技术,全称是:Code Generation Libraray,CGLib可以为一个类创建一个子类,在子类中采用方法拦截的技术拦截所有父类方法的调用并顺势织入横切逻辑。CGLib是一个强大、高性能的Code生产类库,可以实现运行期动态扩展java类,Spring在运行期间通过 CGlib继承要被动态代理的类,重写父类的方法,实现AOP面向切面编程呢。

3.3 两者对比

如果要被代理的对象是个实现类,那么Spring会使用JDK动态代理开完成操作(Spring默认采用JDK动态代理实现机制);如果要被代理的对象不是个实现类那么,Spring会强制使用CGLib来实现动态代理

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Java spring AOP基础

本文链接: https://www.lsjlt.com/news/156194.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java spring AOP基础
    目录一、AOP概述二、AOP相关语述三、AOP与动态代理3.1JDK动态代理3.2CGLib动态代理3.3两者对比总结一、AOP概述 AOP,即面向切面编程,简单来说就是将代码中重复...
    99+
    2022-11-12
  • Spring BOOT AOP基础应用教程
    目录面试课题 Spring boot AOPSpring boot 动态代理AOP 切面基本知识自定义注解自定义注解如何在AOP引用面试课题 Spring boot AOP Spri...
    99+
    2022-11-13
  • Spring基础之AOP的概念介绍
    目录前言Spring的AOP的功能和目标代理方式@AspectJ的支持启用@AspectJ通过Java注解启用AspectJ注解支持:通过XML配置启用AspectJ注解定义一个切面...
    99+
    2022-11-13
  • Spring基础篇之初识DI和AOP
    前言  作为从事java开发的码农,Spring的重要性不言而喻,你可能每天都在和Spring框架打交道。Spring恰如其名的,给java应用程序的开发带了春天般的舒爽感觉。Spring,可以说是任何一个java开发者通往技术高阶的必备基...
    99+
    2023-05-30
  • Spring框架AOP基础之代理模式详解
    目录一、模拟场景二、代理模式静态代理动态代理一、模拟场景 创建接口 public interface Calculator { int add(int i, int j); ...
    99+
    2022-11-13
    Spring代理模式 Spring AOP代理模式
  • Spring AOP基本概念
    目录举个栗子给大家讲一下代理:什么是AOP?基本术语(1)切面(Aspect)(2) 目标对象(Target)(3) 连接点(JoinPoint)(4) 切入点(PointCut)(...
    99+
    2022-11-12
  • Spring事物基础知识及AOP相关陷阱分析
    目录一、事务的定义二、事务的属性三、Spring 事务的隔离级别3.1 隔离级别引出的问题3.1.1 脏读3.1.2 不可重复读3.1.3 幻读3.2 隔离级别四、Spring 事务...
    99+
    2022-11-12
  • Spring基于XML实现Aop
    目录项目结构具体步骤1、创建maven 项目 导入依赖 创建好项目结构2、写一个TestDao接口 及实现类3、编写切面类测试总结项目结构 具体步骤 1、创建maven 项目 导入...
    99+
    2022-11-12
  • Java Spring AOP详解
    目录1.什么是AOP?2.AOP在Spring中的作用3.使用Spring实现AOP方式一:使用Spring的接口方法二:使用自定义类来实现方法三:使用注解实现总结1.什么是AOP?...
    99+
    2022-11-12
  • Java Spring之基于注解的AOP怎么配置
    本篇内容主要讲解“Java Spring之基于注解的AOP怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java Spring之基于注解的AOP怎么配置”吧!1 环境搭建1.1 第一步:...
    99+
    2023-07-05
  • Spring AOP基本概念是什么
    本篇内容介绍了“Spring AOP基本概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  什么是AOP  AOP即面向切面编程。 ...
    99+
    2023-06-02
  • Spring如何基于XML实现Aop
    本篇内容介绍了“Spring如何基于XML实现Aop”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录项目结构具体步骤创建maven 项目 ...
    99+
    2023-06-20
  • 浅析Spring基于注解的AOP
    目录一、准备工作二、基于注解的AOP之前置通知三、基于注解的AOP之切入点表达式的语法和重用以及获取连接点的信息①切入点表达式的语法②获取连接点的信息③重用写入点表达式一、准备工作 ...
    99+
    2022-11-13
    Spring AOP Spring基于注解的AOP
  • 详细解读Java Spring AOP
    一、对AOP的初印象 首先先给出一段比较专业的术语(来自百度): 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式...
    99+
    2022-11-12
  • 怎样解读Java Spring AOP
    本篇文章为大家展示了怎样解读Java Spring AOP,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、对AOP的初印象首先先给出一段比较专业的术语(来自百度):在软件业,A...
    99+
    2023-06-21
  • Java的Spring AOP怎么用
    这篇文章主要介绍Java的Spring AOP怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是AOP&作用AOP 为 Aspect Oriented Programming 的缩写,意思为...
    99+
    2023-06-29
  • Spring AOP的基本概念是什么
    这篇文章主要介绍“Spring AOP的基本概念是什么”,在日常操作中,相信很多人在Spring AOP的基本概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring AOP的基本概念是什么”的疑...
    99+
    2023-06-20
  • Java的Spring AOP详细讲解
    目录什么是AOP&作用AOP的动态代理技术基于JDK的动态代理cglib动态代理AOP相关概念AOP开发明确事项需要编写的内容AOP技术实现的内容AOP 底层使用哪种代理方式...
    99+
    2022-11-13
  • Java Spring AOP该怎么理解
    这篇文章给大家介绍Java Spring AOP该怎么理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言面向切面编程,利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的...
    99+
    2023-06-22
  • 【Java】Java基础
    环境准备 安装JDK和JRE 下载JDK,可以在官网Java Downloads | Oracle 中国下载,但是这里需要注册才能够下载。在Index of java-local/jdk (huawe...
    99+
    2023-09-22
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作