zoukankan      html  css  js  c++  java
  • spring IOC

    1 ioc和di

    ioc,inversion of control

    控制转化。控制主要指的是对对象的创建的控制,本来程序按需创建对象,但是现在控制权交给第三方,即spring,程序不需要自己创建对象了,它需要对象的时候只要从spring的Bean容器中get即可,即控制权由程序转化到了第三方框架spring。

    di,dependency injection

    依赖注入。假如A依赖于对象B,如果不使用spring的话,我们需要首先创建B对象,然后再创建A对象,但是,依赖注入是说,从java Bean容器中获取A对象的时候,只要在xml中指定了A和B的依赖关系,A所依赖的B对象直接由spring注入给A使用。

    2 spring IOC容器中的beans是何时创建的

    如果scope是单例的话,默认情况下是ioc容器启动的时候就会实例化,但是如果设置了lazy-init="true"的话,那么要等到getBean()的时候才实例化该bean。

    如果scope是prototype的话,是要等到getBean()时才会实例化该bean,原因很简单,都没有用就实例化的话,浪费内存。

    创建ClassPathXmlApplicationContext对象的时候,只是解析了spring xml配置文件,然后将里面用bean标签定义的bean元素创建BeanDefinion对象,放入DefaultListableBeanFactory的ConcurrentHashMap中。

    prototype的bean的实例化是在getBean()的时候。

    可见,除了对象的实例化不同以外,spring对主逻辑几乎没有影响,这样做带来的巨大好处就是对对象解耦合。

  • 相关阅读:
    蛙蛙请教:把一段c算法代码转换成c#代码。
    和病毒折腾了两天
    WawaKM预览版发布,欢迎大家测试反馈哦
    (转)深度分析如何在Hadoop中控制Map的数量
    [转载]JAVA操作符
    (转)Hive Index
    Hadoop++:Hadoop的局部性能改良
    深入了解Hive Index具体实现
    Linux echo命令
    (转)带索引的mapReduce
  • 原文地址:https://www.cnblogs.com/hustdc/p/8351506.html
Copyright © 2011-2022 走看看