IOC. DI(依赖注入 为数组和集合类型属性赋值)

  数组类型的属性赋值

public class Student {
   private Integer sid;
   private String sname;
   private String gender;
   private String[] hobby;
  ...
}
 <bean id="studentFive" class="com.atguigu.spring.pojo.Student">
       <property name="sid" value="1002"></property>
       <property name="sname" value="赵六"></property>
       <property name="gender" value="男"></property>
       <property name="hobby">
<!--  array:专门为数组类型属性赋值  -->
<!-- 如果数据是字面量类型,用value,是类类型,用ref  -->
           <array>
               <value>抽烟</value>
               <value>喝酒</value>
               <value>烫头</value>
           </array>
       </property>
   </bean>

 list集合类型的属性赋值

public class Clazz {
   private Integer cid;
   private String cname;
   private List<Student> students;
}
    <!-- 2. 引用list集合类型的bean  -->
   <!--  配置一个集合类型的bean,需要使用util约束:直接用,
   自动将约束导入进来 xmlns:util="http://www.springframework.org/schema/util"
   如果没有这个约束,标签就用不了
   -->
   <util:list id="studentList">
       <ref bean="studentOne"></ref>
       <ref bean="studentTwo"></ref>
       <ref bean="studentThree"></ref>
   </util:list>
    <bean id="clazzOne" class="com.atguigu.spring.pojo.Clazz">
       <property name="cid" value="111"></property>
       <property name="cname" value="最强spring"></property>
       <property name="students" ref="studentList"></property>
       </bean>

 

  Map集合类型属性赋值

    第一中方式:

package com.atguigu.spring.pojo;

public class Teacher {
   private Integer tid;
   private String tname;
  ...
}
public class Student {
   private Integer sid;
   private String sname;
   private String gender;
   private String[] hobby;
   private Clazz clazz;
   private Map<String,Teacher> teacherMap;
  ...
}
 <bean id="studentOne" class="com.atguigu.spring.pojo.Student" >
       <property name="sid" value="1001"></property>
       <property name="sname" value="张三"></property>
       <property name="gender" value="男"></property>
       <property name="teacherMap" >
           <map>
  <!--
  ertry:表示类型,map集合的键和值
    key:是字面量类型String直接用key
    值是类类型:加上ref
    -->
               <entry key="10086" value-ref="techerOne"></entry>
               <entry key="10001" value-ref="techerTwo"></entry>
           </map>
       </property>
   </bean>
     
   <bean id="techerOne" class="com.atguigu.spring.pojo.Teacher">
       <property name="tid" value="10086"></property>
       <property name="tname" value="打包"></property>
   </bean>
   <bean id="techerTwo" class="com.atguigu.spring.pojo.Teacher">
       <property name="tid" value="10001"></property>
       <property name="tname" value="no包"></property>
   </bean>

   第二种方式:

  <bean id="techerOne" class="com.atguigu.spring.pojo.Teacher">
       <property name="tid" value="10086"></property>
       <property name="tname" value="打包"></property>
   </bean>
   <bean id="techerTwo" class="com.atguigu.spring.pojo.Teacher">
       <property name="tid" value="10001"></property>
       <property name="tname" value="no包"></property>
</bean>
<util:map id="teacherMap">
       <entry key="10086" value-ref="techerOne"></entry>
       <entry key="100010" value-ref="techerTwo"></entry>
   </util:map>
 <bean id="studentOne" class="com.atguigu.spring.pojo.Student" >
       <property name="sid" value="1001"></property>
       <property name="sname" value="张三"></property>
       <property name="gender" value="男"></property>
       <property name="teacherMap" ref="teacherMap"></property>
   </bean>

 

   注解和xml方式:

             一起使用的,注解:是加在类上的

                         基于xml的:写在xml中

                     如果自己写的类,加上一个注解没问题。

                    如果用的是第三方的类库,需要把第三方类库交给ioc管理,不能加注解,而且也加不了注解。

 

posted @ 2022-11-13 11:07  zjw_rp  阅读(116)  评论(0)    收藏  举报