Spring依赖注入

依赖注入

* 依赖关系的管理:以后都交给spring来维护,在当前类需要用到其他类的对象,由spring来为我们提供 我们只需要在配置文件中说明
* 依赖关系的维护:就称为依赖注入

能注入的数据

   * 基本类型和string
   * 其他bean类型(在配置文件中或者注解配置过的bean)
   * 复杂类型/集合类型

注入方式

* 类中的属性需要赋值就需要使用依赖注入
    第一种:构造函数提供
        经常变化的数据不适合注入的方式
        标签  constructor-arg
        出现的位置  : bean标签体内部
        标签中的属性
            type:指定要注入的数据类型
            index:用于指定要注入的数据给构造函数中指定索引值得参数赋值。从零开始
            name:用于指定要注入的数据给构造函数中指定参数赋值- - - - - -常用
            value:用于基本类型 以及String
            ref:用于指定其他的bean类型数据。指的是在Spring容器中出现过的bean对象
        优势:
            在获取bean对象时,注入数据时必须的操作,否则对象无法创建成功。
        弊端:
            改变了bean对象的实例化方式,使我们在创建对象时,即使用不到,也得提供参数
        <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl" >
        <constructor-arg name="name" value="泰斯特"></constructor-arg>
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="birthday" ref="now"></constructor-arg>
        </bean>  
        //日期对象  使用ref注入
        <bean id="now" class="java.util.Date"></bean>
    第二种:使用set方法提供
        标签:property
        属性:
            name:用于指定要注入的数据给构造函数中指定参数赋值- - - - - -常用
            value:用于基本类型 以及String
            ref:用于指定其他的bean类型数据。指的是在Spring容器中出现过的bean对象
        ## 一般类型
        <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl" >
            <property name="name" value="test"></property>
            <property name="age" value="18"></property>
            <property name="birthday" ref="now"></property>
        </bean>
        
        ## 复杂类型  集合类型
            <bean id="accountService2" class="com.itheima.service.impl.AccountServiceImpl2" >
                <property name="myStrs">
                    <array>
                        <value>aaa</value>
                        <value>bbb</value>
                        <value>ccc</value>
                    </array>
                </property>
                <property name="mylist">
                    <list>
                        <value>aaa</value>
                        <value>bbb</value>
                        <value>ccc</value>
                    </list>
                </property>
                <property name="myset">
                    <set>
                        <value>aaa</value>
                        <value>bbb</value>
                        <value>ccc</value>
                    </set>
                </property>
                <property name="myMap">
                    <map>
                        <entry key="tesrtA" value="aaa"></entry>
                        <entry key="tesrtB" value="bbb"></entry>
                    </map>
                </property>
                <property name="myProps">
                    <props>
                        <prop key="testC">ccc</prop>
                        <prop key="testD">ddd</prop>
                    </props>
                </property>
    </bean>
    第三种:使用注解提供
上一篇:无序列表有序列表


下一篇:8寸NFC坚固三防平板手持终端,双色注塑模/康宁大猩猩玻璃