常见错误:
1、如果在getBean的时候,传入的id不存在,就会报以下错误:
2、IOC示例程序 --通过类型获取对象(重点):
实验2:根据bean的类型从IOC容器中获取bean的实例★
示例程序代码: 当applicationContext.xml配置文件中,只有一个Person.class的对象实例配置的时候,程序是可以正常运行的。
@Test publicvoid test2() { // applicationContext 就是 IOC容器 // ClassPathXmlApplicationContext是容器的实现类 ApplicationContext applicationContext = newClassPathXmlApplicationContext("classpath:applicationContext.xml"); // 从容器中获取 id 为 person 定义的对象 Person person = (Person) applicationContext.getBean(Person.class); System.out.println( person); }
在applicationContext.xml配置文件中: |
xypuxing
.pojo.Person">常见错误说明:
当在applicationContext.xml配置文件中。有多个同Person.class类型实现的时候。
3、IOC示例程序 -- 通过构造方法参数名注入值
实验3:通过构造器为bean的属性赋值 applicationContext.xml配置文件中的内容: |
示例代码:
@Test
public void test3() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person03 = (Person) applicationContext.getBean("person03");
System.out.println(person03);
}
实验4:通过index属性指定参数的位置 applicationContext.xml配置文件中的内容: |
示例代码:
@Test
public void test4() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person04 = (Person) applicationContext.getBean("person04");
System.out.println(person04);
}
5、IOC示例程序 -- 根据参数类型注入
实验5:根据参数类型注入 applicationContext.xml配置文件中的内容: |
xypuxing.pojo.Person">
示例代码:
@Test
public void test5() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person05 = (Person) applicationContext.getBean("person05");
System.out.println(person05);
}
6、ioc之P空间:
实验6:通过p名称空间为bean赋值 先打开applicationContext.xml配置文件,添加P名称空间: |
在applicationContext.xml中的配置
<bean id="person06"class="com.xypuxing.pojo.Person"p:id="6"p:name="第6个人" p:age="18" p:phone="18600001111"/> 示例代码: @Test publicvoid test6() { ApplicationContext applicationContext= newClassPathXmlApplicationContext("applicationContext.xml"); Person person06 = (Person)applicationContext.getBean("person06"); System.out.println(person06); } |
7、测试null值的使用:
实验7:测试使用null值
修改Person类的属性,添加默认值
public class Person {
private int id;
private String name;
private int age;
private String phone = "默认值";
applicationContext.xml中配置的内容
测试的代码:
@Test
public void test7() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person07 = (Person) applicationContext.getBean("person07");
System.out.println(person07);
}
7、IOC之子对象的赋值测试(重点)
实验8:引用其他bean★
创建个新的工程。测试Spring的开发环境。此不重复。请参阅前面,环境搭建。
创建实体Bean对象
publicclass Car {
private String name;
private String carNo;
publicclass Person {
privateintid;
private String name;
privateintage;
private String phone;
private Car car;
在applicationContext.xml中配置如下:
<bean id="car"class="com.atguigu.pojo.Car"p:name="宝马" p:carNo="粤B12312" />
<bean id="person10"class="com.xypuxing.pojo.Person">
<property name="id" value="10"/>
<property name="name" value="perosn10"/>
<property name="age" value="18"/>
<property name="phone" value="0101001"/>
<property name="car" ref="car"/>
bean>
测试的代码:
@Test
publicvoid test10() {
//创建容器对象
ApplicationContext applicationContext= newClassPathXmlApplicationContext("applicationContext.xml");
Person person10 = (Person) applicationContext.getBean("person10");
System.out.println(person10);
}
8、IOC之内部Bean的使用:
实验9:引用内部bean
在applicationContext.xml中的配置:
测试代码:
@Test
public void test11() {
//创建容器对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person11 = (Person) applicationContext.getBean("person11");
System.out.println(person11);
System.out.println( applicationContext.getBean("car02") );
}
内部的Bean不能被外部使用
9、IOC之List属性的赋值
实验10:使用list子元素为List类型的属性赋值
给Person类,添加List集合的属性:
public class Person {
private int id;
private String name;
private int age;
private String phone;
private Car car;
private List phones;
在applicationContext.xml 配置文件中的内容:
18611110000
18611110001
18611110002
测试的代码:
@Test
public void test12() {
//创建容器对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person12 = (Person) applicationContext.getBean("person12");
System.out.println(person12);
}
10、IOC之Map属性的赋值:
实验11:使用map子元素为Map类型的属性赋值
给Person对象添加Map属性
publicclass Person {
privateintid;
private String name;
privateintage;
private String phone;
private Car car;
private List phones;
private Map map;
在applicationContext.xml中的配置
测试的代码:
@Test
publicvoid test13() {
//创建容器对象
ApplicationContext applicationContext= newClassPathXmlApplicationContext("applicationContext.xml");
Person person13 = (Person)applicationContext.getBean("person13");
System.out.println(person13);
}
11、IOC之Properties属性的赋值:
实验12:使用prop子元素为Properties类型的属性赋值
给Person对象添加Properties属性
public class Person {
private int id;
private String name;
private int age;
private String phone;
private Car car;
private List phones;
private Map map;
private Properties props;
在applicationContext.xml中的配置
root
root
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/spring
测试的代码
@Test
public void test14() {
//创建容器对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person14 = (Person) applicationContext.getBean("person14");
System.out.println(person14);
}
12、IOC之util 名称空间:
util名称空间,可以定义
实验13:通过util名称空间创建集合类型的bean
添加util名称空间
applicationContext.xml中的配置
string1
string2
string3
测试的代码:
@Test
public void test15() {
//创建容器对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person15 = (Person) applicationContext.getBean("person15");
System.out.println(person15);
List list = (List) applicationContext.getBean("list1");
System.out.println(list);
}
13、IOC之级联属性赋值:
实验14:给bean的级联属性赋值
applicationContext.xml中的配置
测试的代码
@Test
public void test16() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person16 = (Person) applicationContext.getBean("person16");
System.out.println( person16 );
}