DI(依赖注入)的四种方式

1. 属性注入(最常用的方式)

1.1. 通过 setter 方法注入Bean 的属性值或依赖的对象
1.2. 使用<property>元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 <value> 子节 点指定属性值

<bean id="hq1" class="com.chai.demo1.HelloSpring">
    <!--    
        注意:name属性的值  为当前类中setter方法的名称。  
        setName2(String name) 假如方法叫setName2 那么name="name2" 也应该填写name2
    -->
    <property name="name" value="你好..."></property>
</bean>

2. 构造器注入

2.1 通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用
2.2 构造器注入在 <constructor-arg> 元素里声明属性, <constructor-arg> 中没有 name 属性

    <bean id="p1" class="com.chai.lesson2.Person" scope="prototype">
        <constructor-arg value="小李" index="0"></constructor-arg>
        <constructor-arg value="18"></constructor-arg>
    </bean>
    <bean id="p2" class="com.chai.lesson2.Person">
        <constructor-arg value="jack" index="0"></constructor-arg>
        <constructor-arg type="int">
            <value>14</value>
        </constructor-arg>
    </bean>

Tip:

  • value:表示你要注入的属性的值
  • index 表示参数下标
  • type 指定类型
  • scope 属性(表示bean的作用域) 可以通过执行springIOC容器来创建对象 的类型
    • prototype 原型模式(多例模式) 每次调用IOC容器的getBean方法,就会返回一个新的对象(地址)
    • singleton 单例模式 每次调用都会返回同一个对象

3. 工厂方法注入(很少使用,不推荐)


4. 泛型依赖注入(了解)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。