如何详细解析Spring代理创建与AOP链式调用流程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计7327个文字,预计阅读时间需要30分钟。
前言+AOP,即是面向切面编程,它也是一种面向对象编程。AOP可以将公共代码(如事务、操作日志等)抽取出来,动态地织入到目标类的方法中,大大提高我们的编程效率,并使程序变得更加优雅。
前言
AOP,也就是面向切面编程,它可以将公共的代码抽离出来,动态的织入到目标类、目标方法中,大大提高我们编程的效率,也使程序变得更加优雅。如事务、操作日志等都可以使用AOP实现。这种织入可以是在运行期动态生成代理对象实现,也可以在编译期、类加载时期静态织入到代码中。而Spring正是通过第一种方法实现,且在代理类的生成上也有两种方式:JDK Proxy和CGLIB,默认当类实现了接口时使用前者,否则使用后者;另外Spring AOP只能实现对方法的增强。
正文
基本概念
AOP的术语很多,虽然不清楚术语我们也能很熟练地使用AOP,但是要理解分析源码,术语就需要深刻体会其含义。
增强(Advice):就是我们想要额外增加的功能
目标对象(Target):就是我们想要增强的目标类,如果没有AOP,我们需要在每个目标对象中实现日志、事务管理等非业务逻辑
连接点(JoinPoint):程序执行时的特定时机,如方法执行前、后以及抛出异常后等等。
切点(Pointcut):连接点的导航,我们如何找到目标对象呢?切点的作用就在于此,在Spring中就是匹配表达式。
引介(Introduction):引介是一种特殊的增强,它为类添加一些属性和方法。这样,即使一个业务类原本没有实现某个接口,通过AOP的引介功能,我们可以动态地为该业务类添加接口的实现逻辑,让业务类成为这个接口的实现类。
本文共计7327个文字,预计阅读时间需要30分钟。
前言+AOP,即是面向切面编程,它也是一种面向对象编程。AOP可以将公共代码(如事务、操作日志等)抽取出来,动态地织入到目标类的方法中,大大提高我们的编程效率,并使程序变得更加优雅。
前言
AOP,也就是面向切面编程,它可以将公共的代码抽离出来,动态的织入到目标类、目标方法中,大大提高我们编程的效率,也使程序变得更加优雅。如事务、操作日志等都可以使用AOP实现。这种织入可以是在运行期动态生成代理对象实现,也可以在编译期、类加载时期静态织入到代码中。而Spring正是通过第一种方法实现,且在代理类的生成上也有两种方式:JDK Proxy和CGLIB,默认当类实现了接口时使用前者,否则使用后者;另外Spring AOP只能实现对方法的增强。
正文
基本概念
AOP的术语很多,虽然不清楚术语我们也能很熟练地使用AOP,但是要理解分析源码,术语就需要深刻体会其含义。
增强(Advice):就是我们想要额外增加的功能
目标对象(Target):就是我们想要增强的目标类,如果没有AOP,我们需要在每个目标对象中实现日志、事务管理等非业务逻辑
连接点(JoinPoint):程序执行时的特定时机,如方法执行前、后以及抛出异常后等等。
切点(Pointcut):连接点的导航,我们如何找到目标对象呢?切点的作用就在于此,在Spring中就是匹配表达式。
引介(Introduction):引介是一种特殊的增强,它为类添加一些属性和方法。这样,即使一个业务类原本没有实现某个接口,通过AOP的引介功能,我们可以动态地为该业务类添加接口的实现逻辑,让业务类成为这个接口的实现类。

