spring(五):spring中Aware接口的使用
spring中自定义组件需要使用spring的底层组件时,可以通过自定义组件实现相关XxxAware接口,重写其中的方法进而实现
例如:自定义一个组件,该组件中需要使用ApplicationContext、BeanFactory,那么我们就可以通过实现ApplicationContextAware、BeanFactoryAware接口实现
ApplicationContextAware
public class MyAware implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
System.out.println("传入的IOC容器applicationContext = [" + applicationContext + "]");
this.applicationContext = applicationContext;
}
}
@Configuration
public class AwareConfig {
@Bean
public MyAware myAware(){
return new MyAware();
}
}
public class TestAware {
@Test
public void testM(){
ApplicationContext context = new AnnotationConfigApplicationContext(AwareConfig.class);
System.out.println("context = " + context);
}
}
结果
传入的IOC容器applicationContext = [org.springframework.context.annotation.AnnotationConfigApplicationContext@2ff5659e: startup date [Wed May 29 14:00:42 GMT+08:00 2019]; root of context hierarchy]
context = org.springframework.context.annotation.AnnotationConfigApplicationContext@2ff5659e: startup date [Wed May 29 14:00:42 GMT+08:00 2019]; root of context hierarchy
BeanNameAware
public class MyAware implements BeanNameAware{
@Override
public void setBeanName(String name) {
System.out.println("name = [" + name + "]");
}
}
结果
name = [myAware]
context = org.springframework.context.annotation.AnnotationConfigApplicationContext@2ff5659e: startup date [Wed May 29 14:07:16 GMT+08:00 2019]; root of context hierarchy
EmbeddedValueResolverAware
public class MyAware implements EmbeddedValueResolverAware{
@Override
public void setEmbeddedValueResolver(StringValueResolver stringValueResolver) {
String value = stringValueResolver.resolveStringValue("当前操作系统:${os.name},10-9=#{10-9}");
System.out.println("value = " + value);
}
}
结果
value = 当前操作系统:Windows 10,10-9=1
context = org.springframework.context.annotation.AnnotationConfigApplicationContext@2ff5659e: startup date [Wed May 29 14:13:11 GMT+08:00 2019]; root of context hierarchy
其它XxxAware用法类似
通过Aware可以把spring底层组件注入到自定义的bean中,再用相应的processor处理器处理
ApplicationContextAware是利用ApplicationContextAwareProcessor来处理的,XxxAware也有相应的processor进行处理,其实就是相关后置处理器完成处理工作
spring(五):spring中Aware接口的使用的更多相关文章
- 手写Spring,定义标记类型Aware接口,实现感知容器对象
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 同事写的代码,我竟丝毫看不懂! 大佬的代码,就像 "赖蛤蟆泡青蛙,张的丑玩 ...
- spring源码:Aware接口(li)
一.spring容器中的aware接口介绍 Spring中提供了各种Aware接口,比较常见的如BeanFactoryAware,BeanNameAware,ApplicationContextAwa ...
- spring源码:Aware接口
一.spring容器中的aware接口介绍 Spring中提供了各种Aware接口,比较常见的如BeanFactoryAware,BeanNameAware,ApplicationContextAwa ...
- Spring扩展点之Aware接口族
引言 Spring中提供了各种Aware接口,方便从上下文中获取当前的运行环境,比较常见的几个子接口有:BeanFactoryAware,BeanNameAware,ApplicationContex ...
- Spring扩展之五:Aware接口等
ApplicationContextAwareProcessor 1.介绍 ApplicationContextAwareProcessor是一个Spring内部工具,它实现了接口BeanPostPr ...
- 提升Spring Boot项目中API接口并发能力的一个注解,效果明显
异步调用几乎是处理高并发Web应用性能问题的万金油,那么什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次 ...
- Spring中Aware相关接口原理
Spring中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.ServletContextA ...
- spring中的aware接口
1.实现了相应的aware接口,这个类就获取了相应的资源. 2.spring中有很多aware接口,包括applicationContextAware接口,和BeanNameAware接口. 实现了这 ...
- spring中一些aware接口
Spring中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.ServletContextA ...
随机推荐
- python的list内存分配算法
前提:python为了提高效率会为list预先分配一定的内存空间供其使用,避免在每次append等操作都去申请内存,下面简单分析下list的内存分配算法,主要就是两段. 1.当没有元素时,newsiz ...
- git Octotree:提供项目目录,方便用户在线快速浏览项目结构【转载】
很好奇的是,GitHub 作为代码托管平台,竟然没有提供项目目录,方便用户在线快速浏览项目结构.所以,在线分析项目源码就会变得很繁琐,必须一层一层点击,然后再一次一次地向上返回.要知道,本来 GitH ...
- HTML5 音频播放
代码实例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 对webpack的初步研究7
Configuration 您可能已经注意到很少有webpack配置看起来完全相同.这是因为webpack的配置文件是导出对象的JavaScript文件.然后,webpack根据其定义的属性处理此对象 ...
- 基于canvas实现的高性能、跨平台的股票图表库--clchart
什么是 ClChart? ClChart是一个基于canvas创建的简单.高性能和跨平台的股票数据可视化开源项目.支持PC.webApp以及React Native和Weex等平台.在React Na ...
- 第九届ECNU Coder A.足球锦标赛
题目链接:http://acm.ecnu.edu.cn/contest/16/problem/A/ 题目: A. 足球锦标赛 Time limit per test: 2.0 seconds Time ...
- threading.get_ident()
https://docs.python.org/3/library/threading.html Return the 'thread identifier' of the current threa ...
- pve之daemon
pmxcfs The Proxmox Cluster file system (“pmxcfs”) is a database-driven file system for storing confi ...
- 如何获取url里面的参数
想必大家经常会遇到这样的问题吧,每次获取url参数的时候就一阵头疼,那现在我就教大家一个简单的方法,将url的参数转换成一个对象,用的时候直接用对象点出来就好了.不多说,直接上代码 function ...
- python实现基于两张图片生成圆角图标效果的方法
python实现基于两张图片生成圆角图标效果的方法 这篇文章主要介绍了python实现基于两张图片生成圆角图标效果的方法,实例分析了Python使用pil模块进行图片处理的技巧,分享给大家供大家参考. ...