美文网首页
Spring AOP

Spring AOP

作者: 那谁319 | 来源:发表于2018-07-29 20:14 被阅读0次
  • Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。

    • JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler接口和Proxy类。
    • 如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。
      CGLIB(Code Generation Library),是一个代码生成的类库,可以在运行时动态的生成某个类的子类,注意,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。
  • aop 实现机制概述

1、处理bean定义时做些事情
处理bean定义时,解析配置文件相应的aop标签,根据Namespace获取对应的Namespace处理器(具体为AopNamespaceHandler),spring容器启动过程中,执行到bean定义文件加载读取时,遇到非默认的
Namespace时会执行定制的Namespace处理逻辑,在其中调用定制的Namespace处理器,执行相应
的解析器(具体为ConfigBeanDefinitionParser)。
具体到AopNamespaceHandler里面,有几个Parser,是用于具体标签转换的,分别为:
config–>ConfigBeanDefinitionParser
aspectj-autoproxy–>AspectJAutoProxyBeanDefinitionParser
scoped-proxy–>ScopedProxyBeanDefinitionDecorator
spring-configured–>SpringConfiguredBeanDefinitionParser
2、getBean时做些事情
在每个Bean初始化之后,如果需要,调用AspectJAwareAdvisorAutoProxyCreator中的postProcessBeforeInitialization为Bean生成代理。

相关文章

网友评论

      本文标题:Spring AOP

      本文链接:https://www.haomeiwen.com/subject/gsstvftx.html