控制反转 & Ioc创建对象的基础方式

半城伤御伤魂 提交于 2020-03-07 20:41:37

控制反转————

  • 控制:谁来控制对象的创建

传统应用程序对象是由程序本身控制创建的,使用Spring后,对象是由Spring来控制创建的(经由xml文件配置)

  • 反转:程序本身不再创建对象,而是反过来被动的接受对象(getBean(String id))

  • 依赖注入:就是利用set方法来进行注入的

所以,Ioc(控制反转)其实就是:对象由Spring来创建,管理,装配!

Ioc创建对象的方式(xml装配bean)

  1. 使用无参构造创建对象,然后调用set方法(底层)

        <bean id="user" class="com.woshi.pojo.User">
            <property name="name" value="张三"></property>
        </bean>
  2. 使用构造器,利用下标索引赋值(索引从0开始,存在歧义风险,类型正确的情况下可能把值付错)

     <bean id="user2" class="com.woshi.pojo.User">
            <constructor-arg index="0" value="李四"></constructor-arg>
        </bean>
  3. 使用构造器,通过参数类型赋值(存在歧义风险,如果由同类型的成员变量,会按顺序为他们赋值,提供的多余构造器需要的,会报错,少于没事,会赋给null,要是涉及到基础数据类型就会报错

        <bean id="user3" class="com.woshi.pojo.User">
            <constructor-arg type="java.lang.String" value="王五"></constructor-arg>
        </bean>
    
  4. 使用构造器,通过成员变量名称赋值(不容易有歧义)

        <bean id="user4" class="com.woshi.pojo.User">
            <constructor-arg name="name" value="刘六"></constructor-arg>
        </bean>

初级的装配bean的方法就以上4种,如果使用property来装配就不要干掉无参构造器,并且保证提供相应的set方法;

如果使用构造器来装配bean,就要提供相应的构造器(倒是不必提供set方法)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!