【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 {@Overridepublic 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/beanshttp://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可以在初始化阶段获取自身环境的引用,从而更灵活地处理一些与环境相关的逻辑。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker vue项目打成镜像并推送到仓库

shell 脚本 #!/bin/bash image_nameweb version$1 echo ${version}echo build...... docker build -t ${image_name}:${version} . echo build doing..... sleep 10 image_idsudo docker images | grep ${image_name} | awk -F" " {print $3} | head -n 1 echo ${im…

Atcoder Beginner Contest 332 (A - F 题)

目录 [A - Online Shopping](https://atcoder.jp/contests/abc332/tasks/abc332_a)Problem StatementConstraintsInputOutputSample Input 1Sample Output 1Sample Input 2Sample Output 2Sample Input 3Sample Output 3 SolutionCode [B - Glass and Mu](https://atcoder.jp/c…

高并发下接口幂等性解决方案

高并发下接口幂等性解决方案 1. 幂等性概念: ①. 一个幂等操作指任意多次执行所产生的影响跟一次执行的影响相同.②. 幂等函数(幂等方法):a. 可以使用相同参数重复执行,并能获得相同结果的函数.b. 这些函数不会影响数据状态,也不用担心重复执行会对数据造成改变.c. 如:"…

Crocoddyl: 多接触最优控制的高效多功能框架

系列文章目录 前言 我们介绍了 Crocoddyl&#xff08;Contact RObot COntrol by Differential DYnamic Library&#xff09;&#xff0c;这是一个专为高效多触点优化控制&#xff08;multi-contact optimal control&#xff09;而定制的开源框架。Crocoddyl 可高效计算给定预定…

太阳能供电+4G摄像头搭建EasyCVR鱼塘养殖远程视频监控方案

一、背景需求 随着我国农业的快速发展&#xff0c;以及对新兴技术的应用&#xff0c;养殖业、农牧业、种植业等也面临着全新的挑战与机遇。对鱼塘养殖行业来说&#xff0c;养殖区域面积大、管理难&#xff0c;经常会遇到偷钓者、盗窃鱼苗、非法入侵等监管难题。在国家大力扶持…

2023年OceanBase开发者大会-核心PPT资料下载

一、峰会简介 2023年OceanBase开发者大会主要涵盖了OceanBase的最新技术进展、产品更新以及开发者工具的发布。大会发布了OceanBase 4.1版本&#xff0c;公布了两大友好工具&#xff0c;升级了文档的易用性&#xff0c;并统一了企业版和社区版的代码分支。这些举措全面呈现了O…

基于局域网和广域网训练推理加速策略

一、基于局域网的多GPU上并行训练 TensorFlow 的 MirroredStrategy 和 PyTorch 的 DistributedDataParallel 它们可以帮助您在多个 GPU 或多个计算节点上训练大型模型。这些策略的核心目标是提高训练速度,同时保持模型的准确性和稳定性。 加速的底层原理 TensorFlow 的 Mirro…

Android Studio导出Excel的一些感悟

目前&#xff0c;我一共用了四种依赖。分别用于导出Excel。 第一种&#xff1a; // https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxlimplementation group: net.sourceforge.jexcelapi, name: jxl, version: 2.6.12 缺点&#xff1a;1、已经很久没有更新…

一文教会pandas

今天的笔试题令我感触很深&#xff0c;回顾一下之前写的都是低代码想想都。。。 anareport[[reportid,anndt,stockid]].drop_duplicates().rolling(window10,min_periods1).sum().groupby([anndt,stockid])[reportid].count() dfanareport[[reportid,anndt,stockid]].drop_dup…

构建高效持久层:深度解析 MyBatis-Plus(02)

目录 引言1. 逻辑删除1.1 概述1.2 逻辑删除的优势1.3.为什么使用逻辑删除1.4 综合案例 2. 乐观锁和悲观锁2.1.什么是乐观锁和悲观锁2.2.乐观锁和悲观锁的区别2.3.综合案例 3. 分页插件总结 引言 在现代软件开发中&#xff0c;数据库操作是不可或缺的一环。为了提高系统的性能、…

awk统计日志

部分日志文本格式内容 [2023-12-18 22:40:52.301][INFO ][221][com.excellent.common.core.security.filter.UrlRedirectFilter.doFilter:131] ----------------->>> 请求进入拦截器&#xff0c;IP&#xff1a;14.111.199.218, CLIENT&#xff1a;ANDROID&#xff0c…

避坑指南:uni-forms表单在uni-app中的实践经验

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;uni-app篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:uni-app中forms表单的避坑指南篇 该篇章已被前端圈子收录,点此处进入即可查看更多优质内…

LeetCode-152. 乘积最大子数组

问题描述 原题链接 给你一个整数数组 nums &#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff08;该子数组中至少包含一个数字&#xff09;&#xff0c;并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 问题分析 …

计算机网络考研辨析(后续整理入笔记)

文章目录 体系结构物理层速率辨析交换方式辨析编码调制辨析 链路层链路层功能介质访问控制&#xff08;MAC&#xff09;信道划分控制之——CDMA随机访问控制轮询访问控制 扩展以太网交换机 网络层网络层功能IPv4协议IP地址IP数据报分析ICMP 网络拓扑与转发分析&#xff08;重点…

Distilling the Knowledge in a Neural Network 中文版 (含: bibtex格式的引用)

bibtex格式的引用 article{hinton2015distilling,title{Distilling the knowledge in a neural network},author{Hinton, Geoffrey and Vinyals, Oriol and Dean, Jeff},journal{arXiv preprint arXiv:1503.02531},year{2015} }摘要 提高几乎所有机器学习算法性能的一个非常简…

阶段十-springsecurity总结

jwt认证流程 SpringSecurity 认证过程 第一步&#xff1a; 创建一个类实现UserDetailsService接口&#xff0c;重写其中的方法 通过重写 public UserDetails loadUserByUsername(String username) 方法 从数据库校验用户输入的用户名 配置SecurityConfig Bean注入 Passwor…

面试题总结(十一)【C++】【华清远见西安中心】

C和C的区别有哪些&#xff1f; C 和 C 是两种不同的编程语言&#xff0c;它们有以下一些区别&#xff1a; 1. 语言起源和发展&#xff1a;C 语言是由贝尔实验室的 Dennis Ritchie 在 1972 年开发的&#xff0c;主要用于系统编程和底层开发&#xff1b;而 C 语言是在 C 语言的基…

类中成员函数及普通函数地址获取方式

文章目录 代码准备测试演示注意事项成员函数类型申明测试演示总的打印输出 代码准备 头文件:Calc.h #pragma onceclass Calc { public:int add(int,int);//函数声明static int sub(int,int);//函数声明 public:int b;//定义了一个成员变量static int a;//声明了一个静态成员变…

SG3524控制的恒流源电路图

SG3524简介 SG3524是开关电源脉宽调制型控制器。应用于开关稳压器&#xff0c;变压器耦合的直流变换器&#xff0c;电压倍增器&#xff0c;极性转换器等。采用固定频率&#xff0c;脉冲宽度调制&#xff08;脉宽调制&#xff09;技术。输出允许单端或推挽输出。芯片电路包括电…

lvs负载均衡

lvs负载均衡群集 群集 特点&#xff1a;由多台主机构成&#xff0c;都干同一件事&#xff0c;对外显示一个整体 企业集群分类 负载均衡群集高可用群集高性能运算群集 负载均衡群集&#xff08;LB&#xff09; 负载均衡的作用 提高应用系统的响应能力可以处理更多的访问请…