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

反射在Spring IOC容器中的应用——动态创建Bean (补充)

在上文中,讲述了反射在Spring IOC容器中的应用,即通过获取类的class对象后进行实例化,用实例化对象去操作其中的成员(变量,方法等),今天来补充一下反射实现动态调用

一句话讲,就是:通过获取 Class 对象并实例化,再根据配置文件动态调用方法的过程,就是“动态调用”

还是老样子,举例讲解:

准备方法:

public class TestInvoke {public void sayHello() {System.out.println("欢迎使用!正在执行 sayHello 方法。");}public void sayBye() {System.out.println("再见!正在执行 sayBye 方法。");}public void doWork() {System.out.println("正在处理任务... 执行 doWork 方法。");}
}

配置文件(使用时只会给一个配置取消注释,即激活):

# 场景1:调用 sayHello
className=TestInvoke
methodName=sayHello# 场景2:调用 sayBye
# className=TestInvoke
# methodName=sayBye# 场景3:调用 doWork
# className=TestInvoke
# methodName=doWork

核心执行代码:

public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {// 1. 获取类名并加载 Class 对象Class<?> c = Class.forName(getName("className"));System.out.println("加载的类名:" + c.getSimpleName());// 2. 获取方法名并获取 Method 对象Method method = c.getDeclaredMethod(getName("methodName"));// 3. 绕过访问控制检查(可选)method.setAccessible(true);// 4. 创建实例对象TestInvoke testInvoke = (TestInvoke) c.newInstance();// 5. 调用方法method.invoke(testInvoke);
}

运行实例:

示例1:调用 sayHello()

配置文件内容:

className=TestInvoke
methodName=sayHello

程序输出:

加载的类名:TestInvoke
欢迎使用!正在执行 sayHello 方法。

总结一下:

http://www.xdnf.cn/news/17751.html

相关文章:

  • Elasticsearch RBAC 配置:打造多租户环境的安全访问控制
  • CMake语法与Bash语法的区别
  • CV 医学影像分类、分割、目标检测,之【3D肝脏分割】项目拆解
  • 图论Day2学习心得
  • YouBallin正式上线:用Web3重塑创作者经济
  • 强化学习进化之路(GRPO->DAPO->Dr.GRPO->CISPO->GSPO)
  • 自由学习记录(84)
  • 回归算法:驱动酒店智能化定价与自动化运营的引擎—仙盟创梦IDE
  • STL容器详解:Vector高效使用指南
  • 机器学习(一)
  • [论文阅读] 人工智能 + 软件工程 | 从模糊到精准:模块化LLM agents(REQINONE)如何重塑SRS生成
  • 给电脑升级内存,自检太慢,以为出错
  • HTTPS 工作原理
  • 「iOS」————设计架构
  • Vue3 图片懒加载指令
  • 第4节 神经网络从公式简化到卷积神经网络(CNN)的进化之路
  • AI增强SEO关键词表现
  • 预训练模型在机器翻译中的应用:迁移学习的优势详解
  • 举例说明环境变量及 PATH 的作用
  • RuoYi-Vue3-FastAPI框架的功能实现(中)
  • 计算机网络技术学习-day1《网络乾坤:从比特洪流到协议星河的奇幻之旅》​
  • Dynamsoft Capture Vision Crack
  • 反射的详解
  • Vue3 vs Vue2:全面对比与面试宝典
  • BM25:概率检索框架下的经典相关性评分算法
  • 单例模式的理解
  • Windows11 运行IsaacSim GPU Vulkan崩溃
  • FluxApi - 使用Spring进行调用Flux接口
  • 《Foundations and Recent Trends in Multimodal Mobile Agents: A Survey》论文精读笔记
  • 物联网之小白调试网关设备