📜  Spring – 带有依赖对象的 Setter 注入(1)

📅  最后修改于: 2023-12-03 15:35:03.784000             🧑  作者: Mango

Spring – 带有依赖对象的 Setter 注入

概述

Spring 是一个非常流行的 Java 开发框架,它提供了一组统一的 API ,使 Java 开发更加快速和简单。其中比较重要的一个特性就是依赖注入(DI)。

在 Spring 中,依赖注入是通过对象实例化和配置文件来实现的。其中,最常见的是使用 Setter 注入方式。在这种方式下,我们需要为每一个依赖对象创建一个 Setter 方法,Spring 在初始化这个类的对象时,会调用 Setter 方法,将依赖对象注入到相应的属性中。

示例

让我们看一下一个简单的例子。

首先,我们创建一个依赖对象:

public class MessageService {
    public String getMessage() {
        return "Hello World!";
    }
}

然后,我们创建一个需要依赖注入的类:

public class HelloWorld {
    private MessageService messageService;
    
    public void setMessageService(MessageService messageService) {
        this.messageService = messageService;
    }
    
    public void sayHello() {
        System.out.println(messageService.getMessage());
    }
}

注意,在上面的代码中,我们为依赖对象创建了一个 Setter 方法:

public void setMessageService(MessageService messageService) {
    this.messageService = messageService;
}

这个方法会被 Spring 使用,将依赖对象注入到 HelloWorld 的属性中。

接下来,我们通过 Spring 的配置文件来实例化和注入依赖对象。

<bean id="messageService" class="com.example.MessageService" />

<bean id="helloWorld" class="com.example.HelloWorld">
    <property name="messageService" ref="messageService" />
</bean>

在上面的配置文件中,我们首先定义了一个 id 为 messageService 的 bean,他的 class 属性指向了我们创建的依赖对象。然后,我们定义了一个 id 为 helloWorld 的 bean ,也指定了它的 class 为我们创建的 HelloWorld 类。注意,在这里我们使用了 property 元素,指定了 messageService 这个属性的值应该是 messageService 这个 bean 的引用。

最后,我们来看一下如何使用 HelloWorld 类:

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");
    helloWorld.sayHello();
}

在上面的代码中,我们创建了一个 ApplicationContext,它会从 applicationContext.xml 配置文件中读取并实例化相应的 bean。然后,我们可以通过 getBean 方法获取到我们的 HelloWorld 类的实例。最后,我们调用 helloWorld 的 sayHello 方法,进行输出。

总结

通过 Setter 注入方式,我们可以在类的所有属性被赋值之后,将依赖对象注入到属性中。这样,我们就可以在代码执行时,动态地创建和配置对象。Spring 框架强大的依赖注入功能,让开发人员可以轻松地管理和维护更加复杂的应用程序。