zoukankan      html  css  js  c++  java
  • sping IOC和DI 初始化和关系

    springIOC和spring DI作为spring core的核心思想,有必要学习下才能更好的使用spring

    ===================================================================================

    AbstractXmlApplicationContext abstractXmlApplicationContext=new ClassPathXmlApplicationContext("spring/springioc.xml");

    abstractXmlApplicationContext.getBean("animal", AnimalFactoryBean.class);

    1.spring ioc是什么?

    spring ioc 翻译成中文就是控制反转,在spring中的本质是BeanFactory,具体在DefaultListableBeanFactory 类中beanDefinitionMap,存放着所有需要初始化的bean的信息,更具体一点,指的是被<bean>标签和@Configuration,@Bean等注解修饰的类. BeanDefinition 是被解析出来的bean的属性,包括单例,作用域等.可以说,ioc本身只做三件事情,定位资源eg:"spring/springioc.xml",解析每个bean的属性封装成BeanDefinition ,注册BeanDefinition 到beanDefinitionMap.解析的过程较为复杂...

    2.什么是DI

    DI就是依赖注入,依赖注入是每个bean实例化的时候,如果属性依赖其他对象,需要实例化其他对象,实例化的过程交由spring 来完成,实例化后的存放在DefaultSingletonBeanRegistry 类  singletonObjects(map),属性中DefaultListableBeanFactory实现了DefaultSingletonBeanRegistry

    依赖注发生的时机

       2.1.abstractXmlApplicationContext.getBean("animal", AnimalFactoryBean.class);

       2.2<bean>非懒加载和@Configuration,@Bean等注解

    3.spring 启动过程,ioc和di在哪里开始执行的

      点开ClassPathXmlApplicationContext的构造方法,发现主要是refresh()方法 ioc主线

    ConfigurableListableBeanFactory beanFactory = this.obtainFreshBeanFactory();-->this.refreshBeanFactory();-->this.loadBeanDefinitions(beanFactory);

        dI主线refresh()开始

    this.finishBeanFactoryInitialization(beanFactory);-->beanFactory.preInstantiateSingletons();-->getBean(beanName);

    4.spring DI什么时候使用cglib 策略产生bean(lookup-method 和 replace-method)?

                   http://blog.sina.com.cn/s/blog_4ada12a50100l3ap.html

                    https://www.cnblogs.com/ViviChan/p/4981619.html

    源码http://blog.51cto.com/dba10g/1726519

    流程:http://www.importnew.com/24254.html

    https://my.oschina.net/iioschina/blog/837899

    https://www.cnblogs.com/aspirant/p/9082858.html

     https://www.cnblogs.com/davidwang456/p/4187012.html

    https://www.cnblogs.com/ITtangtang/p/3978349.html

    https://my.oschina.net/u/206123/blog/1553564

  • 相关阅读:
    [bzoj 4553][Tjoi2016&Heoi2016]序列
    [bzoj 5143][Ynoi 2018]五彩斑斓的世界
    [bzoj 4939][Ynoi 2016]掉进兔子洞
    luogu_P3674 小清新人渣的本愿
    [bzoj 2809][Apio2012]dispatching
    [bzoj 3110][zjoi 2013]K大数查询
    Entity Framework技巧系列之九
    Entity Framework技巧系列之八
    Entity Framework技巧系列之七
    Entity Framework技巧系列之六
  • 原文地址:https://www.cnblogs.com/jinjian91/p/9446508.html
Copyright © 2011-2022 走看看