今日学习总计

Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配、基于 Annotation 的 Bean 装配和自动装配等。

 

Spring 基于 XML 的装配通常采用两种实现方式,即设值注入(Setter Injection)和构造注入(Constructor Injection)。本节将讲解如何在 XML 配置文件中使用这两种注入方式。

 

1. 创建 Person 类

在项目 springDemo02 中的 src 目录下,创建一个名称为 com.mengma.assembly 的包,在该包下创建一个 Person 类,如下所示。

package com.mengma.assembly;

public class Person {

    private String name;

    private int age;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    // 重写toString()方法

    public String toString() {

        return "Person[name=" + name + ",age=" + age + "]";

    }

    // 默认无参的构造方法

    public Person() {

        super();

    }

    // 有参的构造方法

    public Person(String name, int age) {

        super();

        this.name = name;

        this.age = age;

    }

}

上述代码中,定义了 name 和 age 两个属性,并为其提供了 getter 和 setter 方法,由于要使用构造注入,所以需要提供有参的构造方法。为了能更清楚地看到输出结果,这里还重写了 toString() 方法。

2. 创建 Spring 配置文件

在 com.mengma.assembly 包下创建一个名为 applicationContext.xml 的配置文件,如下所示。

纯文本复制

<?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:p="http://www.springframework.org/schema/p"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

    <!-- 使用设值注入方式装配Person实例 -->

    <bean id="person1" class="com.mengma.assembly.Person">

        <property name="name" value="zhangsan" />

        <property name="age" value="20" />

    </bean>

    <!-- 使用构造方法装配Person实例 -->

    <bean id="person2" class="com.mengma.assembly.Person">

        <constructor-arg index="0" value="lisi" />

        <constructor-arg index="1" value="21" />

    </bean>

</beans>

 

posted @ 2021-12-01 17:14  禁小呆  阅读(29)  评论(0)    收藏  举报