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

Posted woshi123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制反转 & Ioc创建对象的基础方式相关的知识,希望对你有一定的参考价值。

控制反转————

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

传统应用程序对象是由程序本身控制创建的,使用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方法)

以上是关于控制反转 & Ioc创建对象的基础方式的主要内容,如果未能解决你的问题,请参考以下文章

Spring的控制反转(IOC)学习

Spring IOC(控制反转)示例解析

Spring基础-IOC与DI(控制反转与依赖注入)

Spring ioc

Java_Spring控制反转IoC(Inversion of Control)

C#依赖注入控制反转IOC实现详解