Spring AOP 是如何实现的?

首先,Spring AOP 有一些特性:

  1. 纯 Java 实现,无编译时特殊处理、不修改和控制 ClassLoader

  2. 仅支持方法级别的 Joint Points

  3. 非完整的 AOP 框架

  4. 与 IoC 进行了整合

  5. 与 AspectJ 的注解进行了整合

 

使用层面,有三种编程模型:

  1. <aop: 开头的 xml 配置。

    • 激活 AspectJ 自动代理:<aop:aspectj-autoproxy/>

    • 配置:<aop:config/>

    • Aspect: <aop:aspect/>

    • Pointcut:<aop:pointcut/>

    • Advice:<aop:around/>、<aop:before/>、<aop:after-returning/>、<aop:after-throwing/> 和 <aop:after/>

    • Introduction:<aop:declare-parents/>

    • 代理 Scope:<aop:scoped-proxy/>

  2. 注解驱动

    • 激活 AspectJ 自动代理:@EnableAspectJAutoProxy

    • Aspect:@Aspect

    • Pointcut:@Pointcut

    • Advice:@Before、@AfterReturning、@AfterThrowing、@After、@Around

    • Introduction:@DeclareParents

  3. JDK 动态代理、CGLIB 以及 AspectJ 实现的 API

    • 代理:AopProxy

    • 配置:ProxyConfig

    • Join Point:JoinPoint

    • Pointcut:Pointcut

    • Advice:Advice、BeforeAdvice、AfterAdvice、AfterReturningAdvice、 ThrowsAdvice

 

核心实现类:

  • AOP 代理对象:AopProxy、JdkDynamicAopProxy、CglibAopProxy
  • AOP 代理对象工厂:AopProxyFactory、DefaultAopProxyFactory
  • AOP 代理配置:ProxyConfig
  • Advisor:PointcutAdvisor、IntroductionAdvisor
  • Advice:Interceptor、BeforeAdvice、AfterAdvice及子类
  • Pointcut:StaticMethodMatcher
  • JoinPoint:Invocation
  • Advisor 适配器:AdvisorAdapter、AdvisorAdapterRegistry
  • AdvisorChainFactory
  • AbstractAutoProxyCreator:BeanNameAutoProxyCreator、DefaultAdvisorAutoProxyCreator、AnnotationAwareAspectAutoProxyCreator
  • IntroductionInfo
  • 代理目标对象来源:TargetSource

 

 


【Java面试题与答案】整理推荐

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值