当前位置: 首页 > news >正文

Spring系列之-Aware系列接口

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

     Aware是一个空接口,其目的是标明一些列接口,这些接口主要用于获取一些上下文的实现。从Spring文档中可以看到,目前一Aware结尾的接口主要有下列接口:ApplicationContextAware, ApplicationEventPublisherAware, BeanClassLoaderAware, BeanFactoryAware, BeanNameAware, BootstrapContextAware, EmbeddedValueResolverAware, EnvironmentAware, ImportAware, LoadTimeWeaverAware, MessageSourceAware, NotificationPublisherAware, ResourceLoaderAware, SchedulerContextAware, ServletConfigAware, ServletContextAware。

     下面将对这些接口具体功能及其实现原理做简要分析:

功能介绍:

1.ApplicationContextAware

实现ApplicationContextAware接口的Bean可以获得Spring上下文信息ApplicationContext,ApplicationContextAware接口内部只有一个方法:

void setApplicationContext(ApplicationContext applicationContext) throws BeansException;

该方法会在Spring容器加载完后被调用,用户只要实现这个接口就能拿到Spring上下文信息。

2.ApplicationEventPublisherAware

   该接口主要用于发布一些事件时使用,接口方法如下:

void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher);

实现该接口能获取到ApplicationEventPublisher,这个接口具备发布事件功能。

3.BeanClassLoaderAware

该接口可以获取到加载当前类的类加载器,

void setBeanClassLoader(ClassLoader classLoader);

4.BeanFactoryAware

这个节课很简单,主要哪个用于获取BeanFactory接口。

5.BeanNameAware

实现该接口的Bean能够获取在Spring IOC中bean的名字。

6.BootstrapContextAware

拿到BootstrapContext信息,BootstrapContext暂时不清楚用来干啥,官方解释为:

这提供了一种机制,通过引导环境资源适配器实例时,它是引导。那是,当(开始(bootstrapcontext))在resourceadapter类的方法调用。引导上下文包含对资源适配器实例可用的有用设施的引用。

7.EmbeddedValueResolverAware

实现该接口可以获取Spring加载properties文件的属性值,

void setEmbeddedValueResolver(StringValueResolver resolver);

通常是用于一些编程是获取配置信息,常用于工具类中。

8.EnvironmentAware

void setEnvironment(Environment environment);

实现该接口可以获取到系统的环境变量信息。

9.ImportAware

10.LoadTimeWeaverAware

加载Spring Bean时织入第三方模块,如AspectJ

11.MessageSourceAware

主要用于获取国际化相关接口

12.NotificationPublisherAware

用于获取通知发布者

13.ResourceLoaderAware

初始化时注入ResourceLoader

14.SchedulerContextAware

配合Quartz使用,获取Quartz调度上下文

15.ServletConfigAware, ServletContextAware

web开发过程中获取ServletConfig和ServletContext信息。

 

转载于:https://my.oschina.net/wenbo123/blog/1610166

相关文章:

  • 如何正确配置 Ubuntu 14.04 服务器?
  • JDK 6和JDK 7中的substring()方法
  • 使用事件和消息队列实现分布式事务(转+补充)
  • JFinal极速开发框架使用笔记(三) 分析Model和ActiveRecord
  • 3138 栈练习2
  • innerHTML、html('')与empty在IE上不同的区别
  • 配置tomcat监听80端口、配置tomcat虚拟机、tomcat日志
  • 关于Docker的一些常识
  • linux下tar、zip 压缩文件不带文件路径
  • 【Amaple教程】5. 插件
  • 数值的整数次方
  • 编写高质量iOS与OS X代码的52个有效方法(二)
  • LAMP下安装zabbix流水
  • Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务
  • 自适应滤波:最小均方误差滤波器(LMS、NLMS)
  • canvas 五子棋游戏
  • Docker: 容器互访的三种方式
  • Java应用性能调优
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • oschina
  • PHP的类修饰符与访问修饰符
  • React Native移动开发实战-3-实现页面间的数据传递
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 阿里云前端周刊 - 第 26 期
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 数据仓库的几种建模方法
  • 项目实战-Api的解决方案
  • 交换综合实验一
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • # Maven错误Error executing Maven
  • # 透过事物看本质的能力怎么培养?
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (2)nginx 安装、启停
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (二)学习JVM —— 垃圾回收机制
  • (力扣)循环队列的实现与详解(C语言)
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (数据结构)顺序表的定义
  • (循环依赖问题)学习spring的第九天
  • (转)jdk与jre的区别
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Core中Emit的使用
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET6实现破解Modbus poll点表配置文件
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET建议使用的大小写命名原则
  • .NET实现之(自动更新)
  • @JsonFormat与@DateTimeFormat注解的使用
  • @SuppressWarnings(unchecked)代码的作用
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [BZOJ] 3262: 陌上花开