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对主逻辑几乎没有影响,这样做带来的巨大好处就是对对象解耦合。

  • 相关阅读:
    视图结构 wxml 列表渲染 for
    表存在之设置默认值
    Oracle之根据约束名查找表
    java中String.indexOf()用法
    Idea之快捷键
    List<Map<String,Object>>之按照某个字段排序
    Oracle之mergeInto
    Oracle之根据字段查找表
    Mybatis之一级/二级缓存
    VueJs之前后端数据交互(使用Vue-resource实现)
  • 原文地址:https://www.cnblogs.com/hustdc/p/8351506.html
Copyright © 2011-2022 走看看