1、创建对象
<bean id="user" class="com.qianchen.User"> </bean>
<!--创建User对象-->
<!--
在 bean 标签有很多属性,介绍常用的属性:
id 属性:唯一标识
class 属性:类全路径(包类路径)
创建对象时候,默认是执行无参数构造方法完成对象创建
-->
2、使用set方法注入属性
package com.qianchen;
//创建类,定义属性和对应的 set 方法
public class User {
private String name;
public void setName(String name) {
this.name = name;
}
}
<bean id="user" class="com.qianchen.User">
<property name="name" value="root"/>
</bean>
<!--set方法注入属性-->
<!--使用 property 完成属性注入
name:类里面属性名称
value:向属性注入的值
-->
3、使用有参构造函数注入属性
package com.qianchen;
//创建类,定义属性,创建属性对应的有参数构造方法
public class User {
private String name;
private String password;
public User(String name, String password) {
this.name = name;
this.password = password;
}
}
<bean id="user" class="com.qianchen.User">
<!--有参数构造注入属性-->
<constructor-arg name="name" value="root"></constructor-arg>
<constructor-arg name="password" value="123456"></constructor-arg>
</bean>
4、其他类型属性的注入
-
null
<property name="name">
<null></null>
</property>
-
注入属性-外部bean
(1)创建两个类 People 类和 User 类 (2)在 User 调用 People 里面的方法 (3)在 spring 配置文件中进行配置
package com.qianchen;
public class People {
public void eat(){
System.out.println("eat...");
}
}
package com.qianchen;
//创建类,定义属性,创建属性对应的有参数构造方法
public class User {
private People people;
public void setPeople(People people) {
this.people = people;
}
public void eat(){
people.eat();
}
}
<bean id="people" class="com.qianchen.People">
</bean>
<bean id="user" class="com.qianchen.User">
<property name="people" ref="people"> </property>
</bean>
-
注入属性-内部bean
package com.qianchen;
public class School {
private String name;
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "School{" +
"name='" + name + '\'' +
'}';
}
}
package com.qianchen;
public class Student {
private String name;
private School school;
public void setName(String name) {
this.name = name;
}
public void setSchool(School school) {
this.school = school;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", school=" + school +
'}';
}
}
<bean class="com.qianchen.Student" id="student">
<property name="name" value="root"> </property>
<property name="school">
<bean id="school" class="com.qianchen.School">
<property name="name" value="常宁大学"> </property>
</bean>
</property>
</bean>
-
注入属性-级联赋值
(1)第一种写法
沿用上面的School、Student类
<bean id="school" class="com.qianchen.School">
<property name="name" value="常宁大学"> </property>
</bean>
<bean class="com.qianchen.Student" id="student">
<property name="name" value="root"> </property>
<property name="school" ref="school"> </property>
</bean>
(2)第二种写法
为Student类增加getSchool方法
public School getSchool() {
return school;
}
<bean id="school" class="com.qianchen.School">
</bean>
<bean class="com.qianchen.Student" id="student">
<property name="name" value="root"> </property>
<property name="school" ref="school"> </property>
<property name="school.name" value="常宁大学"> </property>
</bean>
5、xml 注入集合属性
package com.qianchen;
import java.util.*;
public class Student {
private List<String> studentName;//学生姓名
private Set<Integer> id;//学号
private Map<String,String> teacher;//各科老师
private String[] subject;//学科
public void setStudentName(List<String> studentName) {
this.studentName = studentName;
}
public void setId(Set<Integer> id) {
this.id = id;
}
public void setTeacher(Map<String, String> teacher) {
this.teacher = teacher;
}
public void setSubject(String[] subject) {
this.subject = subject;
}
@Override
public String toString() {
return "Student{" +
"studentName=" + studentName +
", id=" + id +
", teacher=" + teacher +
", subject=" + Arrays.toString(subject) +
'}';
}
}
<bean class="com.qianchen.Student" id="student">
<!--数组类型属性注入-->
<property name="subject">
<array>
<value>数学</value>
<value>语文</value>
<value>体育</value>
</array>
</property>
<!--list 类型属性注入-->
<property name="studentName">
<list>
<value>张三</value>
<value>李四</value>
<value>王五</value>
</list>
</property>
<!--map 类型属性注入-->
<property name="teacher">
<map>
<entry key="语文老师" value="孔子"> </entry>
<entry key="数学老师" value="祖之冲"> </entry>
<entry key="体育老师" value="姚明"> </entry>
</map>
</property>
<!--set 类型属性注入-->
<property name="id">
<set>
<value>1</value>
<value>2</value>
<value>3</value>
</set>
</property>
</bean>
在集合里面设置对象类型值
package com.qianchen;
public class Subject {
private String subName;
public void setSubName(String subName) {
this.subName = subName;
}
@Override
public String toString() {
return "Subject{" +
"subName='" + subName + '\'' +
'}';
}
}
package com.qianchen;
import java.util.Arrays;
public class Student {
private Subject[] subject;//学科
public void setSubject(Subject[] subject) {
this.subject = subject;
}
@Override
public String toString() {
return "Student{" +
"subject=" + Arrays.toString(subject) +
'}';
}
}
<bean id="sub1" class="com.qianchen.Subject">
<property name="subName" value="数学"> </property>
</bean>
<bean id="sub2" class="com.qianchen.Subject">
<property name="subName" value="语文"> </property>
</bean>
<bean class="com.qianchen.Student" id="student">
<property name="subject">
<array>
<ref bean="sub1"></ref>
<ref bean="sub2"></ref>
</array>
</property>
</bean>

浙公网安备 33010602011771号