Spring Aware总结
概述
Spring中Aware到底是什么意思?
我们在看Spring源码的时候,经常可以看到xxxAwarexxx的身影,通常我会很疑惑,Aware到底是什么意思呢?
比如图片中这些包含Aware关键字的类或者接口。

我对下面3个类或接口进行了解释,来体会下aware的含义。
ApplicationContextAwareProcessor:可识别应用上下文的处理器。
BeanFactoryAware:实现BeanFactoryAware接口的Bean希望意识到BeanFactory。
EnvironmentAware:任何实现了EnvironmentAware接口的bean希望去被通知当Environment运行的时候。
aware本身的意思是“知道的,明白的;察觉到的,意识到的;有……意识的,有……知识的”,结合上面的类型或接口的解释,个人认为spring中aware的意思是“可识别的,可意识的”。
因此再碰到包含Aware关键字的接口或类时,我们可以把它理解成,这个类或实现了该接口的bean都是可以识别xxx的。
那问题来了,识别什么呢?个人认为, 应该是可以识别Aware形容的组件。
比如ApplicationContextAwareProcessor是指可识别应用上下文的处理器。
BeanFactoryAware是指可以被识别的beanFactory,因此所有实现了BeanFactoryAware的bean都是能够识别BeanFactory,就是可以识别BeanFactory的bean。
Aware的作用
Spring 的依赖注入最大亮点就是所有的Bean对Spring容器的存在是没有意识的(感知不到Spring容器的存在)。
在实际项目中,我们不可避免的要用到Spring容器本身提供的资源,这时候要让Bean主动意识到Spring容器的存在,才能调用Spring所提供的资源,这就是Spring Aware。其实 Spring Aware是被Spring设计为框架内部使用的,若使用了,你的 Bean将会和Spring框架耦合,所以自己不单独使用。
通常使用 Spring Aware的目的是为了让 Bean获得Spring容器的服务。
在大多数情况下,我们应该避免使用任何 Aware 接口,除非我们需要它们。实现这些接口会将代码耦合到Spring框架,但是希望看过本博客内容之后阅读框架源码不再迷惑。
Aware使用示例
下面是一个实现BeanFactoryAware、ApplicationContextAware接口,获取BeanFactory、ApplicationContext的示例。
public class Person implements BeanFactoryAware, ApplicationContextAware {private int id;private ApplicationContext applicationContext;private BeanFactory beanFactory;public int getId() {return id;}public void setId(int id) {this.id = id;}public ApplicationContext getApplicationContext() {return applicationContext;}public void setApplicationContext(ApplicationContext applicationContext) {this.applicationContext = applicationContext;}public BeanFactory getBeanFactory() {return beanFactory;}public void setBeanFactory(BeanFactory beanFactory) {this.beanFactory = beanFactory;}
}
参考
Spring Aware 到底是什么?
相关文章:
Spring Aware总结
概述 Spring中Aware到底是什么意思? 我们在看Spring源码的时候,经常可以看到xxxAwarexxx的身影,通常我会很疑惑,Aware到底是什么意思呢? 比如图片中这些包含Aware关键字的类或者接口。 我对下面3个类或接口进行了解…...
【RocketMQ】源码详解:Broker端消息刷盘流程
消息刷盘 同步入口:org.apache.rocketmq.store.CommitLog.GroupCommitService 异步入口:org.apache.rocketmq.store.CommitLog.FlushRealTimeService 刷盘有同步和异步两种,在实例化Commitlog的时候,会根据配置创建不同的服务 p…...
编码器SIQ-02FVS3驱动
一.简介 此编码器可以是功能非常强大,可以检测左右转动,和按键按下,所以说这一个编码器可以抵三个按键,而且体积非常小,使用起来比三个按键要高大尚,而且驱动也简单。唯一不足的点就是价格有点小贵6-8元才…...
【2021.9.7】记一次exe手动添加shellcode
【2021.9.7】记一次exe手动添加shellcode 文章目录【2021.9.7】记一次exe手动添加shellcode0.大致思路1.获取MessageBox的真实地址VA2.通过OD在代码段添加shellcode3.dump出数据,设置程序OEP4.测试dump出来的exe5.方法总结测试的exe和添加了shellcode的exe:链接&…...
常用训练tricks,提升你模型的鲁棒性
目录一、对抗训练FGM(Fast Gradient Method): ICLR2017代码实现二、权值平均1.指数移动平均(Exponential Moving Average,EMA)为什么EMA会有效?代码实现2. 随机权值平均(Stochastic Weight Averaging,SWA&a…...
具有精密内部基准的 DACx0502 简介及驱动应用示例
DACx0502 说明 16 位 DAC80502、14 位 DAC70502 和 12 位DAC60502 (DACx0502) 数模转换器 (DAC) 均为具有电压输出的高精度、低功耗器件。 DACx0502 线性度小于 1LSB。凭借高精度和微型封装特性,DACx0502 非常适合以下 应用: 增益和失调电压校准、电流…...
C语言函数:字符串函数及模拟实现strncpy()、strncat()、strncmp()
C语言函数:字符串函数及模拟实现strncpy()、strncat()、strncmp() 在了解strncpy、strncat()、前,需要先了解strcpy()、strncat(): C语言函数:字符串函数及模拟实现strlen() 、strcpy()、 strcat()_srhqwe的博客-CSDN博客 strncp…...
学术论文插图要求简介
1. 类型 位图和矢量图是两种不同的图像类型,它们在存储和处理图像时使用不同的方法。以下是它们之间的详细区别: 图像构成方式:位图使用像素(或图像的最小单元)来构建图像,每个像素都有自己的颜色和亮度值。…...
【独家】华为OD机试 - 斗地主 2(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...
力扣-计算特殊奖金
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1873. 计算特殊奖金二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总…...
华为校招机试真题目录
专栏介绍 本专栏将逐步收集历年华为校招算法真题 专栏权益 每篇博客都包含: 算法考点解析(文字+画图)算法源码(支持 Java / JS / Python)每晚9:00 ~ 11:00 在线答疑 真题目录 时间题目考点 or 实现2022.11.27...
EdgeYOLO学习笔记
EdgeYOLO学习笔记 EdgeYOLO: An Edge-Real-Time Object Detector Abstract 本文基于最先进的YOLO框架,提出了一种高效、低复杂度、无锚的目标检测器,该检测器可以在边缘计算平台上实时实现。为了有效抑制训练过程中的过拟合,我们开发了一种…...
【分布式】什么是分布式锁?正文揭晓
分布式锁的概念 分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。 举个例子:假设共享的资源就是一个房子,里面有各种书,分布式系统就是要进屋看书的人, 分布式锁…...
超详细JDK1.8所有版本下载地址
JDK1.8即为JDK8,JDK8是目前是最成熟最稳定的版本,本文将详细介绍JDK1.8历史版本的下载方式。 在此附上JDK1.8安装与配置教程 超详细JDK1.8安装与配置 一、JDK官网 首先打开oracle官网,官网首页地址为 JDK官网首页地址 点击Products 点击…...
论文解析[11] CAT: Cross Attention in Vision Transformer
发表时间:2021 论文地址:https://arxiv.org/abs/2106.05786v1 文章目录摘要3 方法3.1 总体结构3.1.1 Inner-Patch Self-Attention Block3.1.2 Cross-Patch Self-Attention Block3.1.3 Cross Attention based Transformer结论摘要 使用图像patch来替换tr…...
嵌入式和Python(一):python环境搭建的详细步骤
目录 ● 安装python ① 更新软件列表 ② 安装编译python需要用到的环境 ③ 下载python源码 ④ 解压源码包 ⑤ 配置 ⑥ 编译 ⑦ 安装 ● 建立软连接 说明 ① 删除原来的软连接 ② 在/usr/bin/目录创建软连接python,定向/usr/local/bin/python3.9 ③ 检查…...
嵌入式学习笔记——STM32硬件基础知识
STM32开发硬件知识前言单片机参数主频位数STM32最小系统电源电路晶振电路复位电路BOOT选择电路调试接口电路其他电路本文重点本文参考博客链接前言 上一篇中我们重点是讲了一下怎么搭建开发环境以及怎么下载烧录的过程,这都是解决的电脑端的开发环境问题࿰…...
Mybatis插件开发及执行原理
mybatis源码下载 https://github.com/mybatis/mybatis-3,本文分析源码版本3.4.5 mybatis启动大致流程 在看这篇文章前,建议查看我另一篇文章,以了解框架启动的流程和框架中一些重要对象:https://blog.csdn.net/Aqu415/article/…...
vue父子组件通信,兄弟组件通信
目录 一、父子组件通信 1、子组件通过 props 获取父组件变量和父组件调用子组件中的方法(这两个都是父传子的思想) a:子组件通过 props 获取父组件变量 b:父组件调用子组件中的方法 2、父组件通过ref获取子组件变量和子组件调用父组件的方法(这两个都是子传父的…...
大数据技术之Hadoop集群配置
作者简介:大家好我是小唐同学(๑><๑),好久不见,为梦想而努力的小唐又回来了,让我们一起加油!!! 个人主页:小唐同学(๑><๑)的博客主页 目前…...
5分钟部署Fun-ASR语音识别:支持中文、英文、日文等31种语言
5分钟部署Fun-ASR语音识别:支持中文、英文、日文等31种语言 1. 快速入门指南 1.1 学习目标 本文将带您快速完成Fun-ASR-MLT-Nano-2512多语言语音识别模型的部署与使用。通过本教程,您将掌握: 一键式Docker部署方法Web界面基本操作流程Pyt…...
Nomic-Embed-Text-V2-MoE向量模型部署教程:Python环境配置与快速上手
Nomic-Embed-Text-V2-MoE向量模型部署教程:Python环境配置与快速上手 你是不是也遇到过这样的问题:想用最新的向量模型来处理文本,但一看到复杂的部署步骤和满屏的依赖报错就头疼?特别是像Nomic-Embed-Text-V2-MoE这种混合专家模…...
all-MiniLM-L6-v2效果展示:实测文本相似度计算,准确率惊艳
all-MiniLM-L6-v2效果展示:实测文本相似度计算,准确率惊艳 1. 模型能力概览 all-MiniLM-L6-v2作为轻量级语义嵌入模型的代表,在保持高效推理的同时,展现出令人惊喜的文本理解能力。这个基于BERT架构的模型通过知识蒸馏技术&…...
靠专业建议收咨询费!传统旅游顾问转型AI行程规划师,如何在高定市场赚大钱
“上个月,我的咨询费增了好多。”说出这个数字时,前旅行社门店顾问小雅脸上带着自信的笑容。曾经的“人肉攻略机器”到如今的AI高端定制规划师,小雅的转型故事,或许能给所有被困在低价内卷里的旅游从业者带来全新的思路。一、转型…...
高德地图多类型点聚合的优化实践
1. 高德地图点聚合的痛点与优化思路 第一次接触高德地图点聚合功能时,我遇到了一个很实际的问题:当地图上需要同时显示餐厅、酒店、景点等不同类型的POI点时,传统的单一点聚合会把所有类型混在一起统计。想象一下,当你在地图上看到…...
10点滑动平均滤波器:嵌入式零依赖高效实现
1. 项目概述MovingAverageFilter 是一个轻量级、零依赖的嵌入式数字滤波器实现,专为资源受限的微控制器环境设计。其核心功能是执行固定长度(10点)的滑动平均(Moving Average)运算,并在每次新采样输入后立即…...
OpenClaw技能市场挖掘:Qwen3-32B镜像支持的十大实用自动化
OpenClaw技能市场挖掘:Qwen3-32B镜像支持的十大实用自动化 1. 为什么需要关注OpenClaw技能市场? 作为一个长期与效率工具打交道的技术爱好者,我最初接触OpenClaw时,只把它当作又一个普通的自动化框架。直到某天深夜,…...
棕榈酰化修饰:从基础研究到癌症治疗的5个关键突破点
棕榈酰化修饰:从基础研究到癌症治疗的5个关键突破点 在肿瘤免疫治疗领域,蛋白质翻译后修饰的调控机制正成为突破性疗法的新靶点。棕榈酰化修饰——这种将16碳棕榈酸共价连接到蛋白质半胱氨酸残基上的动态过程,近年来因其在癌细胞信号传导中的…...
STM32驱动X-NUCLEO-IHM02A1实现工业级步进电机控制
1. X-NUCLEO-IHM02A1 驱动开发深度解析:面向工业级步进电机控制的 STM32 底层实现 X-NUCLEO-IHM02A1 是意法半导体(STMicroelectronics)推出的高性能双通道步进电机驱动扩展板,专为 STM32 Nucleo 开发平台设计。该板基于 STSPIN22…...
09_微服务划分与团队人数之阿里实践与行业案例
微服务划分与团队人数之阿里实践与行业案例 体系内容 拆分维度:业务能力维度、通用能力维度、非功能维度 组织原则:康威定律、领域自治、平台沉淀、核心/非核心差异化治理 Spring Cloud Alibaba 视角:Nacos、Sentinel、RocketMQ、Seata、Dubbo 在企业场景中的组合打法 行业…...
