← 返回首页
Spring基础教程(五)
发表时间:2020-05-12 16:48:25
Bean定义(XML方式)

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.测试运行