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

【Spring】15 ApplicationContextAware 接口

文章目录

      • 1. 简介
      • 2. 作用
      • 3. 使用
        • 3.1 创建并实现接口
        • 3.2 配置 Bean 信息
        • 3.3 创建启动类
        • 3.4 启动
      • 4. 应用场景
      • 总结

Spring 框架提供了许多回调接口,用于在 Bean 的生命周期中执行特定的操作。ApplicationContextAware 接口是其中之一,它允许 Bean 获取对 ApplicationContext 的引用。本文将介绍 ApplicationContextAware 接口的作用、使用方式,以及在实际应用中的常见场景。

1. 简介

ApplicationContextAware 是一个回调接口,用于在 Spring 容器实例化 Bean 后,将容器的上下文(ApplicationContext)传递给实现了该接口的 Bean。通过这个接口,Bean 可以获得对 Spring 容器的引用,从而获取容器中的其他 Bean 和资源。

源码如下

在这里插入图片描述

2. 作用

ApplicationContextAware 主要用于

  • 获取 ApplicationContext

    允许 Bean 在运行时获取对 Spring 容器的引用。

  • 与容器交互

    Bean 可以通过 ApplicationContext 与容器进行交互,例如获取其他 Bean 的引用、获取环境变量等。

3. 使用

要使用 ApplicationContextAware 接口,需要按以下步骤进行:

在这里插入图片描述

3.1 创建并实现接口
package org.example.cheney;import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;public class DemoBean implements ApplicationContextAware {private ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) {this.applicationContext = applicationContext;}public void displayBeanNames() {// 打印 Bean 的名称String[] beanNames = applicationContext.getBeanDefinitionNames();System.out.println("【ApplicationContextAware】ApplicationContext 容器内存在的 Bean 的名字是:");for (String beanName : beanNames) {System.out.println(beanName);}}
}
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) throws Exception {String location = "applicationContext.xml";try (AbstractXmlApplicationContext context = new ClassPathXmlApplicationContext(location)) {DemoBean demoBean = (DemoBean) context.getBean("demoBean");demoBean.displayBeanNames();System.out.println("End.");}}
}
3.4 启动

输出结果:

在这里插入图片描述

4. 应用场景

ApplicationContextAware 接口通常用于以下场景

  • 获取其他 Bean 的引用:

    当一个 Bean 需要与容器中的其他 Bean 进行交互时,可以使用 ApplicationContext 获取其他 Bean 的引用。

  • 获取环境变量:

    Bean 可以通过 ApplicationContext 获取容器的环境变量,例如配置文件中的属性值。

总结

Spring 框架提供了许多回调接口,用于在 Bean 的生命周期中执行特定的操作。通过实现 ApplicationContextAware 接口,Spring 提供了一种便捷的方式让 Bean 获取对 Spring 容器的引用。这使得 Bean 可以在运行时与容器进行交互,获取其他 Bean 的引用、获取环境变量等。

http://www.lryc.cn/news/264054.html

相关文章:

  • Android 版本控制工具--Git
  • Wireshark高级网络安全分析
  • llvm后端之DAG设计
  • 反序列化 [SWPUCTF 2021 新生赛]ez_unserialize
  • centos(linux)安装jenkins
  • Wireshark统计和可视化
  • 高通平台开发系列讲解(SIM卡篇)SIM软件架构介绍
  • 音频筑基:瞬态、基音、偏噪信号类型分析
  • HarmonyOS ArkTS 中DatePicker先择时间 路由跳转并传值到其它页
  • Axure RP 8 for Mac/win中文版:打造完美交互式原型设计体验
  • 迪文屏开发保姆级教程——页面键盘
  • Unity的UI界面——Text/Image
  • sklearn和tensorflow的理解
  • css中BFC
  • 华为OD机试 - 小朋友来自多少小区(Java JS Python C)
  • 前端:NPM的介绍和使用
  • 力扣57. 插入区间
  • Linux c++开发-11-Socket TCP编程简单案例
  • ros2机器人常规控制流程
  • 分布式全局ID之雪花算法
  • 拿到服务器该做的事和升级docker engine
  • 【VScode和Leecode的爱恨情仇】command ‘leetcode.signin‘ not found
  • mangokit:golang web项目管理工具,使用proto定义http路由和错误
  • 微信小程序实现一个简单的登录功能
  • whisper深入-语者分离
  • LuaJava操作Java的方法
  • oracle怎样才算开启了内存大页?
  • 【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param
  • 跟着我学Python进阶篇:01.试用Python完成一些简单问题
  • neo4j-Py2neo使用