叶千辰  

基于XML方式的Bean管理

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>


posted on 2022-04-26 10:33  叶千辰  阅读(52)  评论(0)    收藏  举报