bean 实例在调用无参构造器创建了空值对象后,就要对 bean 对象的属性进行初始化。 初始化是由容器自动完成的,称为注入。 根据注入方式的不同,常用的有两类:设值注入、构造注入。
设值注入是指,通过 setter 方法传入被调用者的实例。这种注入方式简单、直观,因而 在 Spring 的依赖注入中大量使用。
package com.spring.service;
public class Student {
private String name;
private int age;
private School school;
public void setName(String name) {
this.name = name;
System.out.println("setName方法");
}
public void setAge(int age) {
System.out.println("SetAge方法");
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", school=" + school + "]";
}
public void setSchool(School school) {
this.school = school;
}
}
``
``
package com.spring.service;
public class School {
private String sname;
public void setSname(String sname) {
this.sname = sname;
}
@Override
public String toString() {
return "School [sname=" + sname + "]";
}
}
``<?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="mySchool" class="com.spring.service.School">
<property name="sname" value="北京大学"></property>
</bean>
<bean id="Student" class="com.spring.service.Student" >
<property name="name" value="李四"></property>
<property name="age" value="20"></property>
<property name="school" ref="mySchool"></property>
</bean>
</beans>
当指定 bean 的某属性值为另一 bean 的实例时,通过 ref 指定它们间的引用关系。ref 的值必须为某 bean 的 id 值
对于其它 Bean 对象的引用,除了<bean/>标签的 ref 属性外,还可以使用<ref/>标签。