Springframework-ioc学习(三)之最后修改BeanDefinition的机会

本文深入探讨了Spring框架中BeanDefinition的保存方式及如何对其进行修改。BeanDefinition作为XML配置文件的Java表示形式,其修改能够直接影响到Bean的创建过程。文章还介绍了Spring提供的BeanFactoryPostProcessor与BeanDefinitionRegistryPostProcessor接口,通过实现这些接口可以实现对BeanDefinition的定制化修改。
部署运行你感兴趣的模型镜像

**在本系列的第一篇文章中我们已经把xml转换成了document对象在第二篇中我们又把document转换成了BeanDefinition。
其实BeanDefinition就是xml配置文件在Java中的另一种表现形式。我们对BeanDefinition的修改最终会影响到Bean的生成。**

Spring不允许开发者在对BeanDefinition进行扩展吗?答案当时是No!

文章目录

  1. Spring是如何把BeanDefinition保存起来的

  2. 如何对BeanDefinition做修改?


1.Spring是如何把BeanDefinition保存起来的

  1. BeanDefinition的保存其实非常简单就是保存在BeanFactory的实现类DefaultListableBeanFactory中用一个map来保存的,而实际注册是BeanDefinitionRegistry来完成的,而其实实现也是DefaultListableBeanFactory来完成的,他们的类关系是这样的


其调用流程也比较简单,大家可以根据下面这个调用流程图来看源码,源码关于这点还是非常简单的

2. 如何对BeanDefinition做修改?

前面xml->document->BeanDefinition的步骤都是在obtainFreshBanFactory中完成的,而Spring也给我们开发者提供了

对BeanDefinition做最后修改的机会。由此我们引出一个Spring命名的套路,所以PostProcessor结尾的类,其实都是Spring提供给我们供切入的点。Spring会加载我们的处理逻辑去处理。

修改BeanDefinition,spring 给我们提供了两个类

BeanFactoryPostProcessor,BeanDefinitionRegistryPostProcessor,只要我们实现这两个接口的方法,即可对BeanDefinition进行最后的修改

我们定义一个Bean.默认名字为checkCustomerClosed

看配置文件我们并没有设置销毁方法,另外test我们的默认值是下面这个


实现接口


看下测试


在第一次机会时候我们设置了销毁方法,在第二次修改机会我们设置了test的默认值,根据打印的日志

我们的两次修改都是成功的。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西魏陶渊明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值