视频:https://www.bilibili.com/video/BV1d4411g7tv?from=search&seid=2379349544628579503
这些代码全部都在ioc2.xml实现
实验4:正确的为各种属性赋值
测试使用null值 、
引用类型赋值(引用其他bean、引用内部bean)(测试)
集合类型赋值(List、Map、Properties)、(测试)
util名称空间创建集合类型的bean
级联属性赋值
1、测试使用null值
<property name="lastName">
<!-- 进行复杂的赋值 在<property>标签进行 -->
<null />
</property>
2、 引用类型赋值(引用外部bean、引用内部bean)
ref:代表引用外面的一个值 引用外部bean
<bean id="car01" class="com.atguigu.bean.Car">
<property name="carName" value="宝马"></property>
<property name="color" value="绿色"></property>
<property name="price" value="30000"></property>
</bean>
<property name="car" ref="car01"></property>
引用内部bean
<bean id="person01" class="com.atguigu.bean.Person">
<property name="car">
<!--对象我们可以使用bean标签创建 <bean class="com.atguigu.bean.Car">相当于car = new Car(); -->
<!--引用内部bean;不能被获取到,只能内部使用-->
<bean class="com.atguigu.bean.Car">
<property name="carName" value="自行车"></property>
</bean>
</property>
</bean>
3、集合类型赋值(List、Map、Properties)
list
<bean id="person02" class="com.atguigu.bean.Person">
<!-- books是list类型,如何为list类型赋值 -->
<property name="books">
<!-- <list></list>表示books = new ArrayList<Book>(); -->
<list>
<!--list里面有两本书:东游记和西游记-->
<bean class="com.atguigu.bean.Book" p:bookName="西游记"></bean>
<!-- 引用外部一个元素 -->
<ref bean="book01" />
</list>
</property>
map
<!-- Map<String, Object> maps; -->
<property name="maps">
<!-- <map></map>相当于maps = new LinkedHashMap<>(); map里面元素是key-value 用entry -->
<map>
<!-- 一个entry代表一个键值对 -->
<entry key="key01" value="张三"></entry>
<entry key="key02" value="18"></entry>
<entry key="key03" value-ref="book01"></entry>
<entry key="key04">
<bean class="com.atguigu.bean.Car">
<property name="carName" value="宝马"></property>
</bean>
</entry>
<entry key="key05">
<value>李四</value>
</entry>
<!-- 等同于<entry key="key05" value="李四"-->
</map>
</property>
Properties
<!-- private Properties properties; -->
<property name="properties">
<!-- <props></props>properties = new Properties();所有的k=v都是string -->
<props>
<!-- k=v都是string;value直接写在标签体中 -->
<prop key="username">root</prop>
<prop key="password">123456</prop>
</props>
</property>
</bean>
4、util名称空间创建集合类型的bean
<!-- util名称空间创建集合类型的bean;方便别人引用 -->
<bean id="person03" class="com.atguigu.bean.Person">
<!-- <property name="maps" ></property> -->
<property name="maps" ref="myMap"></property>
</bean>
<!-- util名称标签<util:map></util:map>相当于new LinkedHashMap<>() -->
<util:map id="myMap">
<!-- 添加元素 -->
<entry key="key01" value="张三"></entry>
<entry key="key02" value="18"></entry>
<entry key="key03" value-ref="book01"></entry>
<entry key="key04">
<bean class="com.atguigu.bean.Car">
<property name="carName" value="宝马"></property>
</bean>
</entry>
<entry key="key05">
<value>李四</value>
</entry>
</util:map>
<!--不要在<util:list></util:list>里面再来<list></list>-->
<!-- 下面输出的结果是4个元素 [[],Person,12,{}] -->
<util:list id="myList">
<list></list>
<bean class="com.atguigu.bean.Person"></bean>
<value>12</value>
<ref bean="myMap"/>
</util:list>
5、级联属性赋值
<bean id="car01" class="com.atguigu.bean.Car">
<property name="carName" value="宝马"></property>
<property name="color" value="绿色"></property>
<property name="price" value="30000"></property>
</bean>
<!-- 级联属性可以修改属性的属性,注意:原来的bean的值可能会被修改-->
<!-- 级联属性赋值:级联属性:属性的属性-->
<!--举例 Class Person 里面有一个 private Car car; 对应Class Car, Class Car里面定义一个private String carName,此时carName就是Person的级联属性-->
<bean id="person04" class="com.atguigu.bean.Person">
<!--为car赋值的时候。改变car的价格 -->
<property name="car" ref="car01"></property>
<!-- -->
<property name="car.price" value="900000"></property>
</bean>