美文网首页
spring ioc aop 动态代理之间的关系

spring ioc aop 动态代理之间的关系

作者: 达微 | 来源:发表于2021-11-02 22:01 被阅读0次

    1、类加载器加载class文件

    2、加载到jvm 中,obtainFreshBeanFactory()里的refreshBeanFactory()来为每个bean生成 一个BeanDefinition ,

      注意此时不是我们想要的对象,只是bean的信息,依赖关系等,后续后面spring解析器去解析一个BeanDefinition。

    3、BeanDefinition信息注册,

      将抽象好的BeanDefinition统一注册到IoC容器中,IoC容器是通过hashMap来维护BeanDefinition信息的,key为beanName,value为BeanDefinition。

    4、createBeanInstance()根据beanDefinition的信息创建bean的实例

        怎么创建呢?主要有两种方法,一种是通过beanUtil反射,另一种 CGLIB来实例化对象,如果Bean定义中有方法覆盖,则就需要CGLIB父

    。。。

    7、至于aop特性是实例化好了之后,后置处理来处理

        如果我们spring配置了AOP的话,这个时候就要考虑是cglib还是jdk 动态代理去实现这个功能

    1、在默认情况下,如果spring bean有接口就使用jdk的动态代理。Proxy.newProxyInstance。如果没有接口就调用cglib通过操作字节码去生成目标类的子类来完成代理。

    2、可以手动配置,强制都使用cglib,如果xml中配置 proxy-target-class=true 或则在注解上配置

    @EnableAspectJAutoProxy(proxyTargetClass=true) 这个时候就全部使用cglib来完成动态代理

    记得aop特性是初始化的时候完成的

    4、如果需要类,spring 可以通过注解 或则代码去 map中 获取bean 。

    5、ioc容器负责创建,管理,装配对象,以及管理对象的生命周期

    相关文章

      网友评论

          本文标题:spring ioc aop 动态代理之间的关系

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