自动装配 04 Aware 注入Spring底层组件 & 原理

总接口:Aware

  1. 自定义组件想要使用Spring容器底层的一些组件(ApplicationContext BeanFactory 等等)
  2. 需要让自定义组件实现xxAware接口:在创建对象的时候会调用接口规定的方法注入相关组件 总体参照 Aware 接口 ,把Spring底层一些组件注入到自定义的bean中
  3. xxxAware功能:使用xxProcessor 如ApplicationContextAware ==》 ApplicationContextAwareProcessor,利用后置处理器判断实现了哪个接口,就将Bean转成相应的接口类型,再选择注入相应类型的applicationContext
/*** 生命周期 感知接口测试*/
@Component//注入后自动调用实现的感知接口方法
public class Red implements ApplicationContextAware, BeanNameAware, EmbeddedValueResolverAware {private ApplicationContext applicationContext;@Overridepublic void setBeanName(String name) {System.out.println("调用了 setBeanName");System.out.println("当前bean的名字 " + name);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;System.out.println("调用了 setApplicationContext");}/*** 解析占位符* @param resolver*/@Overridepublic void setEmbeddedValueResolver(StringValueResolver resolver) {System.out.println("调用了 setEmbeddedValueResolver");String resolveString = resolver.resolveStringValue(" hello ${os.name} ; age #{22-1}");System.out.println("解析的字符串 " + resolveString);}
}

配置类

@Configuration
@ComponentScan(value = {"com.example.annotations.service","com.example.annotations.dao","com.example.annotations.controller","com.example.annotations.bean"})
public class MainConfig4Autowire {}

测试

    @Testvoid autowiredTest(){//配置类测试System.out.println("准备创建容器");AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig4Autowire.class);System.out.println("容器创建完毕");//关闭容器applicationContext.close();System.out.println("容器已关闭");}

测试结果:

【SpringBoot_ANNOTATIONS】自动装配 04 Aware 注入Spring底层组件 原理相关推荐

  1. 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  2. java 自动装配_spring自动装配是什么?spring自动装配方式

    Spring是受欢迎的企业级Java应用程序开发框架,数以百万的来自世界各地的开发人员都在使用 Spring 框架创建高性能.易于测试和可重用的代码. 自动装配是Spring框架的重要功能,是使用Sp ...

  3. Spring底层核心原理

    Spring底层整体了解 Bean的生命周期底层原理 依赖注入底层原理 初始化底层原理 推断构造底层原理 AOP底层原理 Spring事务底层原理 Spring是如何创建一个对象的 Annotatio ...

  4. 【Spring】Spring底层核心原理解析

    本文内容索引: 1.Bean的生命周期底层原理 2.依赖注入底层原理 3.初始化底层原理 4.推断构造方法底层原理 5.AOP底层原理 6.Spring事务底层原理 ​但都只是大致流程,后续会针对每个 ...

  5. Spring源码学习(一)--Spring底层核心原理解析

    目录 Spring中是如何创建一个对象? Bean的创建过程 推断构造方法 AOP大致流程 Spring事务 最近在跟视频学习spring源码,将每节课记录下来,以后好来复习. 首先把Spring中核 ...

  6. spring 常用注解 原理 逻辑 代码演示

    01 spring 常用注解 原理 逻辑 代码演示 这是自己观看视频的笔记 文章目录 01 spring 常用注解 原理 逻辑 代码演示 一.组件注册 1.1-spring注解驱动开发 1.2-组件注 ...

  7. spring注解驱动开发-4 Spring 自动装配

    Spring 自动装配 前言 Spring 自动装配的几种方式 1.@Autowired @Qualifier("组件id") @Primary 2.@Resource方式 3.@ ...

  8. Spring的bean的注创建、依赖注入、自动装配

    一.bean 定义:被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的.bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象. bean作用 ...

  9. spring 注入方式和自动装配介绍

    spring四种依赖注入方式 博客分类: spring 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统 ...

  10. Java的注解机制——Spring自动装配的实现原理

    JDK1.5加入了对注解机制的支持,实际上我学习Java的时候就已经使用JDK1.6了,而且除了@Override和@SuppressWarnings(后者还是IDE给生成的--)之外没接触过其他的. ...

最新文章

  1. Matlab编程与数据类型 -- 开关语句switch/end
  2. java感谢_这三天看完Java入门第一季和第二季的成果!纪念一下!感谢Java入门的作者!...
  3. 页面样式乱了,但是又感觉各种js,css都引入了
  4. 高级数据结构研究-B树系列以及红黑树
  5. mac开发的时候必须要xcode
  6. tinyint对应什么数据类型_学习西门子S7-200系列PLC不得不掌握的数据类型
  7. 使用select一个表更新另一个表(批量更新)
  8. 线程控制原语之pthread_self和pthread_create函数
  9. 资深面试官解答:大厂月薪过20K的测试工程师,都需要满足哪些要求?
  10. [2003] Can't connect to MySQL server on 'localhost' (13) 错误解决方法 【主要是linux下php连接不上mysq时】...
  11. 淡入淡出效果 (jQuery)
  12. PADS软件如何导出BOM
  13. 西安理工大学计算机视觉与应用,赵明华 - 西安理工大学 - 计算机科学与工程学院...
  14. VHDL学习--分频器
  15. 空间解析几何之向量运算
  16. python求不规则图形面积_使用Python生成不规则形状的图形
  17. 中国商业环境发展的五个阶段浅析
  18. ipv6笔记无状态地址自动配置及状态
  19. 微信公众号图文消息添加word附件教程详解
  20. Python数据分析之商品数据分析

热门文章

  1. (转)对冲基金投身“另类数据”淘金热
  2. 中保车服灾备云,为保险公司“上保险”
  3. 机器学习笔记(二十五):支撑向量机(SVM)
  4. 【优化算法】动物迁徙优化算法(AMO)【含Matlab源码 1806期】
  5. 【图像处理基础】基于matlab图像RGB+HSV分布图【含Matlab源码 234期】
  6. 【数字信号调制】基于matlab GUI PCM编码+QAM调制【含Matlab源码 1095期】
  7. 【图像隐写】基于matlab DCT图像隐写【含Matlab源码 365期】
  8. 【路径规划】基于matlab粒子群算法机器人栅格路径规划【含Matlab源码 018期】
  9. ai技术领先的企业_领先企业如何扩展AI
  10. scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化