首页 > 编程语言 > 详细

spring源码阅读(二)-Spring AOP

时间:2020-11-17 16:04:19      阅读:22      评论:0      收藏:0      [点我收藏+]

说明

AOP、Spring AOP、Aspectj

AOP

  1. 在我们原来的的代码的基础上,方法执行前,方法返回后,方法出现异常时,进行拦截处理或者叫做增强

Spring AOP

  1. 基于动态代理实现,默认如果使用接口,使用jdk动态代理。如果没有实现接口,则使用CGLIB实现
  2. Spring 3.2 以后,spring-core 直接就把 CGLIB 和 ASM 的源码包括进来了,这也是为什么我们不需要显式引入这两个依赖
  3. Spring AOP 需要依赖于 IOC 容器来管理。
  4. Spring AOP 只能基于容器中的Bean实现代理增强
  5. Spring 提供了 AspectJ 的支持

Aspectj

  1. AspectJ来自于Eclipse基金会
  2. 属于静态织入 注入时机可以是:
      • Compile-time weaving:编译期织入,如类 A 使用 AspectJ 添加了一个属性,类 B 引用了它,这个场景就需要编译期的时候就进行织入,否则没法编译类 B。
      • Post-compile weaving:也就是已经生成了 .class 文件,或已经打成 jar 包了,这种情况我们需要增强处理的话,就要用到编译后织入。
      • Load-time weaving:指的是在加载类的时候进行织入,要实现这个时期的织入,有几种常见的方法。1、自定义类加载器来干这个,这个应该是最容易想到的办法,在被织入类加载到 JVM 前去对它进行加载,这样就可以在加载的时候定义行为了。2、在 JVM 启动的时候指定 AspectJ 提供的 agent:-javaagent:xxx/xxx/aspectjweaver.jar

       3.AspectJ 能干很多 Spring AOP 干不了的事情,它是 AOP 编程的完全解决方案。

Spring AOP

 

spring源码阅读(二)-Spring AOP

原文:https://www.cnblogs.com/LQBlog/p/13993882.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!