练习题
实验一
通过IOC容器创建对象,并为属性赋值
ico.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="person01" class="per.wzy.spring.Person">
<property name="age" value="18"></property>
<property name="name" value="张三"></property>
<property name="sex" value="男"></property>
</bean>
</beans>
test.java
public class ioctest {
@Test
public void Test(){
//创建容器对象
//容器中的对象在容器创建完成的时候就已经创建好了(所有的对象都会创建)
//同一组件在IOC中是单实例的
ApplicationContext context = new ClassPathXmlApplicationContext("ioc.xml");
//获取对象
Person person01 = (Person) context.getBean("person01");
System.out.println(person01.getName());
}
}
实验二
通过Bean的类型从IOC中获取bean的实例
//如果IOC容器中这个类型的bean有多个,则查找会报错
Person person = context.getBean(Person.class);
//存在多个同类型bean,根据id查找
Person person = context.getBean("person02",Person.class);
实验三
3.1使用构造器在IOC中创建bean
<bean id="person03" class="per.wzy.spring.Person">
<constructor-arg name="name" value="大花"></constructor-arg>
<constructor-arg name="age" value="19"></constructor-arg>
<constructor-arg name="sex" value="女"></constructor-arg>
</bean>
- 不添加name属性,默认按照构造器中属性顺序赋值
- 添加index属性,设置位置
- 添加type属性,设置值的类型,适用于构造器重载的情况
3.2通过p名称空间为bean赋值
- 引入p名称空间:beans中添加 xmlns:p="http://www.springframework.org/schema/p"
- 使用p名称空间进行赋值
<bean id="person05" class="per.wzy.spring.Person" p:age="15" p:name="二花" p:sex="母猪"> </bean>
实验四
正确的为各种属性赋值 测试使用nu11值、 引用类型赋值(引用其他bean、引用内部bean) 集合类型赋值(List、Map、 Properties)
**复杂属性赋值**
<bean id="chid01" class="per.wzy.spring.Children">
<constructor-arg name="age" value="10"></constructor-arg>
<constructor-arg name="name" value="梦儿"></constructor-arg>
<constructor-arg name="sex" value="女"></constructor-arg>
</bean>
<bean id="person06" class="per.wzy.spring.Person">
<constructor-arg name="age" value="16"></constructor-arg>
<!--地址引用 bean-->
<!--<constructor-arg name="child" ref="chid01"></constructor-arg>-->
<constructor-arg name="child">
<!--对象使用bean标签进行创建-->
<bean class="per.wzy.spring.Children">
<property name="sex" value="女"></property>
<property name="name" value="翠花"></property>
<property name="age" value="2"></property>
</bean>
</constructor-arg>
<constructor-arg name="childrens">
<list>
<bean id="child02" class="per.wzy.spring.Children" p:sex="男" p:name="王五" p:age="18"></bean>
<ref bean="chid01"></ref>
</list>
</constructor-arg>
<constructor-arg name="name" value="三花"></constructor-arg>
<constructor-arg name="sex" value="女"></constructor-arg>
</bean>
- 赋NULL值,不填写value属性,添加标签
- 复杂属性赋值均不在value中进行赋值
- List赋值:添加标签,标签中继续添加其他标签