【Spring】09 BeanClassLoaderAware 接口

文章目录

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

Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。本文将聚焦于其中的一个接口 BeanClassLoaderAware,介绍它的作用、用法以及在实际开发中的应用场景。

1. 简介

在 Spring 中,BeanClassLoaderAware 接口是一个回调接口,它提供了一个用于设置 Bean 的类加载器的方法。当一个 Bean 实现了 BeanClassLoaderAware 接口时,在该 Bean 实例被实例化后,Spring 容器会调用 setBeanClassLoader 方法,并将加载该 Bean 的类加载器作为参数传递进去。

源码如下

在这里插入图片描述

2. 作用

BeanClassLoaderAware 主要用于获取加载当前 Bean 的类加载器,使得 Bean 能够在运行时获取到关于自身类加载器的信息。

3. 使用

要让一个Bean实现 BeanClassLoaderAware 接口,需要按以下步骤进行

在这里插入图片描述

3.1 创建并实现接口
package org.example.cheney;

import org.springframework.beans.factory.BeanClassLoaderAware;

public class DemoBean implements BeanClassLoaderAware {
    @Override
    public void setBeanClassLoader(ClassLoader classLoader) {
        System.out.println("【BeanClassLoaderAware】Bean 的类加载器是:" + classLoader);
    }
}

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/beans
           http://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) {
        String location = "applicationContext.xml";
        try (AbstractXmlApplicationContext context = new ClassPathXmlApplicationContext(location)) {
            System.out.println("End.");
        }
    }
}

3.4 启动

输出结果:

在这里插入图片描述

4. 应用场景

BeanClassLoaderAware 接口通常用于以下场景

  • 类加载器信息的获取:

    当一个 Bean 需要在运行时获取自身类加载器的信息,以便进行一些与类加载器相关的操作

  • 动态加载类:

    有时需要动态地加载其他类,而加载所需的类加载器就是加载该Bean的类加载器

总结

Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。BeanClassLoaderAware 接口为开发者提供了一种简单而有用的方式来获取 Bean 的类加载器信息。通过实现该接口,Bean 可以在初始化阶段获取自身类加载器,从而更灵活地处理一些与类加载器相关的逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/256396.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day65力扣打卡

打卡记录 寻找峰值 II&#xff08;二分&#xff09; 链接 class Solution:def findPeakGrid(self, mat: List[List[int]]) -> List[int]:l, r 0, len(mat) - 1while l < r:mid (l r) // 2mx max(mat[mid])if mx > mat[mid 1][mat[mid].index(mx)]:r midelse:l…

外包干了6个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

xcrun: error: invalid active developer path

macOS升级完成后出现 xcrun: error: invalid active developer path问题。 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun这是由于 Xcode command line tools 丢…

Web开发:如何在Visual Studio2022中使用Codeium(AI)编写代码

一、安装 【此款AI】免费&#xff01;免费&#xff01;免费&#xff01;使用时正常上网即可&#xff01; 1.前提条件 VS2022版本在17.5.5版本以上&#xff08;若版本不够则需要先更新&#xff09;安装和注册需要科学上网&#xff0c;使用则正常上网即可 2.开始下载扩展 方法…

springboot学习笔记(二)

1.Spring 和SpringBoot区别 2.Web开发入门 3.MVC模型 4.RequestMapping用法 5.RESTful 1.Spring 和SpringBoot区别 参考&#xff1a; 大家都懂Spring和SpringBoot的区别吗&#xff1f; - 知乎 https://www.zhihu.com/question/598494506/answer/3018702101 在学习了Spri…

现代化智慧档案馆八防十防建设调研样本

以下是一份完整的解决方案&#xff0c;包括方案介绍、方案优势、实施方案、预算和清单、实施时间和进度计划以及可能遇到的难点和解决方案。 方案介绍 档案库房八防十防环境一体化监控系统旨在为档案库房提供全方位的环境监控和管理&#xff0c;保障档案的安全、稳定和可靠。该…

CSS新手入门笔记整理:CSS3边框样式

圆角效果&#xff1a;border-radius 语法 元素{border-radius:取值;} border-radius 属性取值是一个长度值&#xff0c;单位可以是 px、em 和百分比等。 border-radius的四个取值 /*设置 1 个值,表示 4 个角的圆角半径都是 10px*/ border-radius:10px; /*设置 2 个值,表示…

mfc配置halcon环境

新建mfc窗体 选择基于对话框 打开项目属性 1、附加包含目录添加&#xff1a; $(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp 2、链接器->常规->附加库目录 $(HALCONROOT)\lib\x64-win64 3、链接器->输入->附加依赖项 halcon.lib;halconcpp.lib 在对话…

山西电力市场日前价格预测【2023-12-20】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-20&#xff09;山西电力市场全天平均日前电价为473.70元/MWh。其中&#xff0c;最高日前电价为1292.75元/MWh&#xff0c;预计出现在08:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

【ARM Trace32(劳特巴赫) 高级篇 21 -- Trace 系统性能分析 Performance Analyzer】

请阅读【Trace32 ARM 专栏导读】 文章目录 Performance AnalyzerPerf 操作步骤采样对象PC采样对象Memory采样对象 TaskPerformance Analyzer sample-based profiling 通常也叫做Trace32 的性能分析(Perf), 这个功能是通过周期性的采样来实现的。被采样到的数据可以被用于统计…

2023-12-18 最大二叉树、合并二叉树、二叉搜索树中的搜索、验证二叉搜索树

654. 最大二叉树 核心&#xff1a;记住递归三部曲&#xff0c;一般传入的参数的都是题目给好的了&#xff01;把构造树类似于前序遍历一样就可&#xff01;就是注意单层递归的逻辑&#xff01; # Definition for a binary tree node. # class TreeNode: # def __init__(se…

基于ssm高校宿舍管理系统的设计与开发论文

摘 要 本文是对高校宿舍管理系统的概括总结&#xff0c;主要从开题背景&#xff0c;课题意义&#xff0c;研究内容&#xff0c;开发环境与技术&#xff0c;系统分析&#xff0c;系统设计&#xff0c;系统实现这几个角度来进行本高校宿舍管理系统的阐述。 高校宿舍管理系统运用…

基于深度学习的图像去雾系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义&#xff1a; 随着计算机视觉和图像处理技术的不断发展&#xff0c;图像去雾成为了一个备受关注的研究领域。在自然环境中&#xff0c;由于大气中的颗粒物和水汽的…

vs code 如何配置配置自动编译将TypeScript代码编译成为JavaScript代码看这一篇就够了!!!

TS代码自动编译为JS代码 1. 检查是否有node环境2. 执行 tsc命令3. 监控编译 总结 本文介绍了vs code如何配置自动编译&#xff0c;将TypeScript代码编译成为JavaScript代码。 1. 检查是否有node环境 检查系统是否有node环境&#xff0c;命令如下 node -v npm -v如果没有安装…

ControlNet Adding Conditional Control to Text-to-Image Diffusion Models

ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models TL; DR&#xff1a;ControlNet 使得我们能通过输入额外的条件图&#xff08;如 Canny 边缘、人体姿态、深度图等&#xff09;&#xff0c;对 SD 生成结果的空间位置有更准确的控制。它拷贝 SD 部分…

DiffUtil + RecyclerView 在 Kotlin中的使用

很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。 文章目录 1 DiffUtil 用来解决什么问题?2 DiffUtil 是什么?3 DiffUtil的使用4 参考文章 1 DiffUtil 用来解决什么问题? 先举几个实际开发中的例子帮助我们感受下: 加载内容流时,第一次加载了ABC,…

idea添加外部jar包

在日常开发中在lib包的里面添加了外部的jar&#xff0c;如何将外部的包添加到java类库中&#xff0c;这样项目就可以引用相应的jar包&#xff0c;操作如下&#xff1a; 1.先将需要的jar复制到lib包如下&#xff0c;如下截图&#xff0c;图标前面没有箭头&#xff0c;表示还未添…

2024年【北京市安全员-B证】考试报名及北京市安全员-B证考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-B证考试报名参考答案及北京市安全员-B证考试试题解析是安全生产模拟考试一点通题库老师及北京市安全员-B证操作证已考过的学员汇总&#xff0c;相对有效帮助北京市安全员-B证考试技巧学员顺利通过考试。…

sqlserver-事物日志

文章目录 前言事务日志逻辑体系结构事务日志物理体系结构虚拟日志文件 (VLF)事务日志的循环性质日志截断事务日志备份事务日志支持的操作恢复个别的事务。启动事务时恢复所有未完成SQL Server事务。将还原的数据库、文件、文件组或页前滚至故障点。支持事务复制。支持高可用性和…

利用gradio快速搭建AI应用

引言 Gradio 是一个用于快速创建交互式界面的Python库&#xff0c;这些界面可以用于演示和测试机器学习模型。使用Gradio&#xff0c;开发者可以非常轻松地为他们的模型构建一个前端界面&#xff0c;而不需要任何Web开发经验。 与类似产品的对比 TensorBoard&#xff1a;主…