1.什么是Bean对象 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是一个被实例化的对象,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的。
spring有两种方式创建bean对象。1.xml 2.annotation
本节我们探讨如何使用xml方式创建bean对象。
一个bean对象的定义,包含了以下配置信息: - 如何创建一个 bean - bean 的生命周期的详细信息 - bean 的依赖关系
每个 bean 定义的下列常用属性: |属性|描述| |-|-| |class|这个属性是强制性的,并且指定用来创建 bean 的 bean 类。| |name/id|这个属性指定唯一的 bean 标识符。在基于 XML 的配置元数据中,你可以使用 ID 和/或 name 属性来指定 bean 标识符。无论是id还是name都要求在IOC容器中是唯一的。| |scope|这个属性指定由特定的 bean 定义创建的对象的作用域,它将会在 bean 作用域的章节中进行讨论。| |constructor-arg|它是用来注入依赖关系的,并会在接下来的章节中进行讨论。| |properties|它是用来注入依赖关系的,并会在接下来的章节中进行讨论| |autowiring mode|它是用来注入依赖关系的,并会在接下来的章节中进行讨论。| |lazy-initialization mode|延迟初始化的 bean 告诉 IoC 容器在它第一次被请求时,而不是在启动时去创建一个 bean 实例。| |initialization |在 bean 的所有必需的属性被容器设置之后,调用回调方法。它将会在 bean 的生命周期章节中进行讨论。| |destruction |当包含该 bean 的容器被销毁时,使用回调方法。它将会在 bean 的生命周期章节中进行讨论。|
2.XML方式配置Bean
实例: 例如把上节IOC实例,改写为xml配置实现。
项目目录结构如下:

步骤:
1.编写实体类Person和Car
package com.entity;
public class Person {
private String name;
private String gender;
private int age;
private Car car;
public Person() {
}
public Person(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
", car=" + car +
'}';
}
}
package com.entity;
public class Car {
private String brand;
private String color;
public Car() {
}
public Car(String brand, String color) {
this.brand = brand;
this.color = color;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", color='" + color + '\'' +
'}';
}
}
2.在applicationContext.xml配置bean.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<bean class="com.entity.Car" id="car">
<property name="brand" value="BMW"/>
<property name="color" value="black"/>
</bean>
<!--注意:id和name都不能重复,但是name可以起多个,id必须是唯一的-->
<bean class="com.entity.Person" name="p1,person">
<property name="name" value="zhangsan"/>
<property name="gender" value="男"/>
<property name="age" value="20"/>
<property name="car" ref="car"/>
</bean>
</beans>
3.编写测试类
package com.test;
import com.entity.Person;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringDemo {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) context.getBean("person");
System.out.println(person);
}
}
4.测试运行
