IOC控制反转、DI依赖注入。可以把DI看作IOC的一种实现方式。
Person类
public class Person {
private Integer id;
private String name;
applicationContext.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>:定义spring所管理的一个对象
id:该对象的唯一标识,注意:不能重复,在通过类型获取bean的过程中,可以不设置
class:此对象所属类的全类名
-->
<bean id="person" class="com.yao.spring.demo.Person">
<!--
<property>:为对象的某个属性赋值
name:属性名
value:属性值
-->
<property name="id" value="1"></property>
<property name="name" value="zs"></property>
</bean>
<!-- <bean class="com.yao.spring.demo.Person">
<property name="id" value="2"></property>
<property name="name" value="zs"></property>
</bean> -->
</beans>
测试方法
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicatioinContext.xml");
//通过getBean获取对象
//Person person = (Person)ac.getBean("person");
//通过类型获取bean,使用此方法获取对象时,要求spring所管理的此类型对象只能有一个
//Person person = ac.getBean(Person.class);
//推荐使用
Person person = ac.getBean("person", Person.class);
System.out.println(person);
}
注意会出现一个常见的错误:
NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.yao.spring.demo.Person’ available: expected single matching bean but found 2:
该错误产生的原因是:在spring配置文件中有多个bean标签的class相同,并且该bean标签没有id值,且程序运行时通过类型获取bean。
如Person person = ac.getBean(Person.class);