spring Aop笔记,和源码讲解
时间: 2024-04-07 10:27:37 浏览: 12
好的,关于Spring AOP的笔记和源码讲解,我可以给你简单介绍一下。
Spring AOP是Spring框架中的一个重要模块,提供了基于代理的AOP实现。AOP(Aspect Oriented Programming)面向切面编程,是一种编程思想,它通过将横切关注点与业务逻辑分离,使得系统的关注点更加清晰,代码更加简洁易懂,同时也提高了代码的可维护性和可扩展性。
在Spring AOP中,切面(Aspect)是一个类,它包含了通知(Advice)和切点(Pointcut)。通知是在切点上执行的操作,例如在方法执行前或执行后执行一些额外的逻辑。而切点则是一个表达式,用于匹配目标对象中的方法,从而确定哪些方法会被通知所影响。
Spring AOP提供了四种通知类型,分别是:
1. 前置通知(Before advice):在目标方法执行之前执行。
2. 后置通知(After returning advice):在目标方法执行之后执行,在目标方法没有抛出异常的情况下。
3. 异常通知(After throwing advice):在目标方法抛出异常后执行。
4. 最终通知(After advice):无论目标方法是否抛出异常,最终通知都会执行。
除了通知之外,Spring AOP还提供了环绕通知(Around advice),它可以在目标方法执行前和执行后执行一些额外的逻辑,并且可以控制目标方法的执行。
在Spring AOP中,代理是通过JDK动态代理或者CGLIB字节码生成技术生成的。如果目标对象实现了接口,则使用JDK动态代理实现代理;如果目标对象没有实现接口,则使用CGLIB字节码生成技术实现代理。
在Spring AOP中,通知和切点都可以使用注解的方式来声明。例如,使用@Aspect注解声明一个切面类,使用@Before、@After、@AfterReturning、@AfterThrowing和@Around注解声明通知方法,使用@Pointcut注解声明切点表达式。
关于Spring AOP源码讲解,它的实现主要涉及到以下几个类:
1. AdvisedSupport类:封装了目标对象、切面和通知等信息。
2. ProxyFactory类:用于生成代理对象的工厂类。
3. AopProxy接口:代理对象的接口。
4. JdkDynamicAopProxy和CglibAopProxy类:实现了AopProxy接口,分别用于基于JDK动态代理和CGLIB字节码生成技术的代理对象。
以上是Spring AOP的笔记和简单源码讲解,希望能对你有所帮助。如果有什么不清楚的地方,可以继续问我。