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)方法
        =>例如事务管理代理,动态代理的代理对象创建,都在这个环节完成。

  • 相关阅读:
    Debian 7 amd64 + fbterm + ucimf
    golanggorilla/mux,强大的URL路由和调度器
    Debian 7 amd64问题
    在mysql启用远程连接
    golang从类型转换角度看interface
    golang监控goroutine异常退出
    golangRedis最佳的Go语言驱动
    usaco Scrambled Letters
    usaco Milk Routing
    滚动数组出错的原因都有那些?&poj3254
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/7229930.html
Copyright © 2011-2022 走看看