【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 所在的环境作为参数传递进去。

源码如下

在这里插入图片描述

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 信息
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd"
       >
    <bean id="demoBean" class="org.example.cheney.DemoBean" />
</beans>
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可以在初始化阶段获取自身环境的引用,从而更灵活地处理一些与环境相关的逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/256960.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第三讲GNSS相关时间系统和转换 第四讲观测值的产生和分类 | GNSS(RTK)课程学习笔记day2

说明&#xff1a;以下笔记来自计算机视觉life吴桐老师课程&#xff1a;从零掌握GNSS、RTK定位[链接]&#xff0c;从零掌握RTKLIB[链接]。非原创&#xff01;且笔记仅供自身与大家学习使用&#xff0c;无利益目的。 第三讲 GNSS相关时间系统和转换 GPS卫星的位置在时间过程中是…

【数据结构】(堆)Top-k|堆排序

目录 概念&#xff1a; 堆的实现 构建 初始化 销毁 插入元素 往上调整 删除堆顶元素 往下调整 返回堆顶元素 返回有效个数 是否为空 堆排序 Top-k问题 ​编辑 创建数据 堆top-k 概念&#xff1a; 堆是将数据按照完全二叉树存储方式存储到一维数组中&#xff…

python的argparse在celery中调用parser.parse_args()参数解析报错解决

文章目录 一、前言二、报错提示三、解决方案四、总结 一、前言 调用flask中的api接口&#xff0c;会调用我的异步函数&#xff0c;而异步函数是在celery框架中执行 下图的执行流程也没有问题 经过调试发现问题出在**parser.parse_args()**函数这里 二、报错提示 命令行运行…

在Pytorch中自定义dataset读取数据

这里使用的是经典的花分类数据集 下载地址&#xff1a;https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz 下载结束后进行解压&#xff0c;可以得到五种不同种类花的图片&#xff0c;如上图所示 主函数 main def main():device tor…

zookeeper:启动后占用8080端口问题解决

ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务。它为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。 我们经常在运行zookeeper服务时&#xff0c;不需要配置服务端口&#xff0c;…

二叉树的最大深度(LeetCode 104)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;深度优先搜索GolangC 方法二&#xff1a;广度优先搜索GolangC 参考文献 1.问题描述 给定一个二叉树 root &#xff0c;返回其最大深度。 叉树的「最大深度」是指从根节点到最远叶子节点的最长路径上的节…

Apollo开放平台9.0让自动驾驶开发者轻松上手

文章目录 平台架构&#xff1a;基础环境&#xff1a;开始使用&#xff1a;体验心得: 在自动驾驶技术飞速发展的今天&#xff0c;成为这个领域的一名开发者是一次挑战、一次冒险&#xff0c;更是一次心灵之旅。作为这个领域的先锋之一&#xff0c;Apollo开放平台9.0于12月19日发…

TSINGSEE青犀边缘AI计算基于车辆结构化数据的车辆监控方案

随着人工智能技术的不断发展&#xff0c;边缘AI技术逐渐成为智能交通领域的研究热点。其中&#xff0c;基于边缘AI的车辆结构化数据技术与车辆监控系统是实现智能交通系统的重要手段之一。为了满足市场需求&#xff0c;TSINGSEE青犀边缘AI智能分析网关/视频智能分析平台推出了一…

【百度PARL】强化学习笔记

文章目录 强化学习基本知识一些框架Value-based的方法Q表格举个例子 强化的概念TD更新 Sarsa算法SampleSarsa Agent类 On_policy vs off_policy函数逼近与神经网络DQN算法DQN创新点DQN代码实现model.pyalgorithm.pyagent.py总结&#xff1a;举个例子 实战 视频&#xff1a;世界…

【SQL】根据年月,查询月份中每一天的数据量

传入YYYY-MM-01&#xff0c;查询这个月中每一天的数据量&#xff0c;没有数据的天数用0表示 WITH RECURSIVE DateRange AS (SELECT :startDate AS DateUNION ALLSELECT DATE_ADD(Date, INTERVAL 1 DAY) FROM DateRangeWHERE Date < LAST_DAY(:startDate) ) SELECTdr.Date,CO…

docker中如何使用Arthas

docker中如何使用Arthas 一、操作步骤1、首先拷贝arthas包下来&#xff1a;2、其次选中你需要查看的容器ID&#xff1a;3、拷贝arthas程序包到容器目录下&#xff1a;4、进入到容器目录5、进入到第3步映射到容器的路径&#xff0c;并使用ll查看是否存在 arthas-boot.jar6、使用…

全球移动通信(2G/3G/4G/5G)频谱分布情况

一、概述 随着通信技术的不断发展&#xff0c;全球各国都在积极推进2G、3G、4G、5G网络的建设和应用。根据FCC统计&#xff0c;目前全球移动通信频谱分布如下&#xff1a; 二、分布 &#xff08;一&#xff09;俄罗斯 2G&#xff1a;主要使用900MHz和1800MHz两个频段。其中&…

Postman接口测试之Postman常用的快捷键

作为一名IT程序猿&#xff0c;不懂一些工具的快捷方式&#xff0c;应该会被鄙视的吧。收集了一些Postman的快捷方式&#xff0c;大家一起动手操作~ 简单操作 xc 请求 操作MAC系统windows系统请求网址 ⌘L Ctrl L 保存请求 ⌘S Ctrl S 保存请求为 ⇧⌘S Ctrl Shift S发送…

云原生之深入解析Kubernetes集群发生网络异常时如何排查

一、Pod 网络异常 网络不可达&#xff0c;主要现象为 ping 不通&#xff0c;其可能原因为&#xff1a; 源端和目的端防火墙&#xff08;iptables, selinux&#xff09;限制&#xff1b; 网络路由配置不正确&#xff1b; 源端和目的端的系统负载过高&#xff0c;网络连接数满…

如何搭建一个买衣服的微信小程序商城

随着移动互联网的普及&#xff0c;微信小程序商城已经成为众多商家开展线上业务的重要平台。本文将介绍如何搭建一个卖衣服的微信小程序商城&#xff0c;帮助您实现线上业务的拓展。 第一步&#xff1a;登录乔拓云平台进入商城后台管理页面 在浏览器中搜索乔拓云平台并登录&a…

广汽本田售后服务技术技能竞赛总决赛

从2001年开始&#xff0c;广汽本田售后服务技术技能大赛年年举办&#xff0c;层层筛选、择优选拔&#xff0c;以赛促练全面提升服务领域一线人员的业务能力。 广汽本田售后服务技术技能大赛在赛程设置、考核内容和形式等方面进行了全面升级与强化&#xff0c;创新突破服务精英的…

科士达新能源荣获CTC国检集团“产品碳足迹证书”

2023年12月14-15日&#xff0c;“2023光伏行业年度大会”在江苏省宿迁市召开&#xff0c;行业主管部门、行业组织、知名专家和光伏企业等代表莅临现场。科士达新能源受邀出席&#xff0c;并在同期举办的”光伏产品碳足迹与碳中和研讨会”上&#xff0c;荣获CTC国检集团“产品碳…

WebMvcConfigurer接口详解及使用方式(Spring-WebMvc)

简介 如下图所示WebMvcConfigurer是spring-webmvc jar包下的一个接口&#xff0c;spring-webmvc jar包又来源于spring-boot-starter-web&#xff0c;所以要使用WebMvcConfigurer要引入spring-boot-starter-web依赖。WebMvcConfigurer接口提供了常用的web应用拦截方法。通过实现…

Elasticsearch 索引生命周期和翻滚 (rollover) 策略

Elasticsearch 是搜索引擎中的摇滚明星&#xff0c;它的蓬勃发展在于使你的数据井井有条且速度快如闪电。 但当你的数据成为一场摇滚音乐会时&#xff0c;管理其生命周期就变得至关重要。 正确使用索引生命周期管理 (ILM) 和 rollover 策略&#xff0c;你的后台工作人员可确保顺…

有损编码——Wyner-Ziv理论

有损编码是一种在信息传输和存储中常见的编码技术&#xff0c;其主要目标是通过牺牲一定的信息质量&#xff0c;以换取更高的压缩效率。相比于无损编码&#xff0c;有损编码可以在保证一定程度的信息还原的前提下&#xff0c;使用更少的比特数来表示信息。Wyner-Ziv理论是一种重…