zoukankan      html  css  js  c++  java
  • 【spring源码学习】spring的IOC容器在初始化bean过程

    【一】初始化IOC的bean的时候Spring会执行的一些回调方法

    (1)spring bean创建的前置处理

        =>ApplicationContextAwareProcessor 在创建bean的时候调用

          bean.setEnvironment(this.applicationContext.getEnvironment())

          bean.setEmbeddedValueResolver(new EmbeddedValueResolver(this.applicationContext.getBeanFactory()))

          bean.setResourceLoader(this.applicationContext)

          bean.setApplicationEventPublisher(this.applicationContext)

          bean.setMessageSource(this.applicationContext)

          setApplicationContext(this.applicationContext)

        =>在该阶段spring配置的或者我们自定义的 BeanPostProcessor的接口实现会执行postProcessBeforeInitialization(final Object bean, String beanName)方法 中调用相关Aware的接口方法。


    (2)spring的Aware的相关接口的调用

        =>BeanNameAware的setBeanName(beanName)

        =>BeanClassLoaderAware的setBeanClassLoader(getBeanClassLoader())

        =>BeanFactoryAware 的setBeanFactory(AbstractAutowireCapableBeanFactory.this)
    (3)spring的InitializingBean的接口的调用
        =>afterPropertiesSet()方法的调用

    (4)bean中配置的init方法

        =>自定义配置

    (5)spring bean创建的后置处理

        =>在该阶段spring配置的或我们自定义的BeanPostProcessor的接口实现会执行postProcessAfterInitialization(Object bean, String beanName)方法
        =>例如事务管理代理,动态代理的代理对象创建,都在这个环节完成。

  • 相关阅读:
    ASP.NET26 个常用性能优化方法
    git 合并 二进制文件
    git 状态管理
    git 分支管理,提交到远程服务器上面
    git 发布android 系统版本 修改版本型号 查看指定文件的修改记录
    使用git 发布android系统版本 1
    提取文本当中的汉字
    wpf 命名空间中不存在
    c# 调用c DLL 所传参数不正确
    用于主题检测的临时日志(233d1263-3c3c-43d0-a2fd-318ee6fd58db
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/7229930.html
Copyright © 2011-2022 走看看