【Spring】11 EnvironmentAware 接口

文章目录

      • 1. 简介
      • 2. 作用
      • 3. 使用
        • 3.1 创建并实现接口
        • 3.2 配置 Bean 信息
        • 3.3 创建启动类
        • 3.4 启动
      • 4. 应用场景
      • 总结

Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。本文将着重介绍一个与环境(Environment)相关的接口 EnvironmentAware,探讨它的作用、用法,以及在实际开发中的应用场景。

1. 简介

在 Spring 中,EnvironmentAware 接口是一个回调接口,它提供了一个用于设置 Bean 所在环境的方法。当一个 Bean 实现了 EnvironmentAware 接口时,在该 Bean 实例被实例化后,Spring 容器会调用 setEnvironment 方法,并将该 Bean 所在的环境作为参数传递进去。

源码如下

【Spring】11 EnvironmentAware 接口_第1张图片

2. 作用

EnvironmentAware 主要用于获取加载当前 Bean 的环境(Environment)的引用,使得 Bean 能够在运行时获取到关于自身所在环境的信息。

3. 使用

要让一个Bean实现 EnvironmentAware 接口,需要按以下步骤进行

在这里插入图片描述

3.1 创建并实现接口
package org.example.cheney;

import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;

public class DemoBean implements EnvironmentAware {
    @Override
    public void setEnvironment(Environment environment) {
        System.out.println("【EnvironmentAware】Bean 所在环境是:" + environment);
    }
}

3.2 配置 Bean 信息


    

3.3 创建启动类
package org.example.cheney;

import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        String location = "applicationContext.xml";
        try (AbstractXmlApplicationContext context = new ClassPathXmlApplicationContext(location)) {
            System.out.println("End.");
        }
    }
}

3.4 启动

输出结果:

在这里插入图片描述

4. 应用场景

EnvironmentAware 接口通常用于以下场景:

  • 获取环境属性:

    当一个 Bean 需要在运行时获取自身所在环境的属性,以便进行一些与环境相关的操作

  • 根据环境配置Bean:

    根据不同的环境配置加载不同的 Bean,从而实现环境特定的配置

总结

Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。EnvironmentAware 接口为开发者提供了一种简单而有用的方式来获取 Bean 所在环境的引用。通过实现该接口,Bean可以在初始化阶段获取自身环境的引用,从而更灵活地处理一些与环境相关的逻辑。

你可能感兴趣的:(Spring,spring,java,后端)