例如??实现?个 FactoryBean,功能:?来代理?个对象 , 对该对象的所有?法做?个拦截,在调?前后都输出??LOG , 模仿 ProxyFactoryBean 的功能 。
FactoryBean ?个接?,当在IOC容器中的 Bean 实现了 FactoryBean 后,通过 getBean(StringBeanName) 获取到的 Bean 对象并不是 FactoryBean 的实现类对象 , ?是这个实现类中的 getObject()?法返回的对象 。要想获取 FactoryBean 的实现类,就要getBean(&BeanName),在 BeanName 之前加上&.
在该接?中还定义了以下3个?法:
TgetObject():返回由FactoryBean创建的Bean实例,如果isSingleton()返回true,则该实例会放到Spring容器中单实例缓存池中;booleanisSingleton():返回由FactoryBean创建的Bean实例的作?域是singleton还是prototype;ClassgetObjectType():返回FactoryBean创建的Bean类型 。
总结BeanFactory 是个 Factory,也就是IOC容器或对象??,FactoryBean 是个 Bean 。在 Spring 中,所有的 Bean 都是由 BeanFactory(也就是IOC容器)来进?管理的 。但对 FactoryBean?? , 这个 Bean 不是简单的 Bean ,?是?个能?产或者修饰对象?成的?? Bean,它的实现与设计模式中的??模式和修饰器模式类似 。
推荐阅读
- 基于 KubeVela 的 GitOps 交付
- 如何将本地jar文件打包到 springboot 执行jar文件中
- 认识一些常见的Spring Boot内置Health Indicator
- Go的元编程:代码生成与AST操作
- K8s组件全解析,你需要知道的一切秘密
- 千亿级数据防丢指南:存储系统的可靠性保障实践
- 如何使用GPT作为SQL查询引擎的自然语言
- 让 GPT-4 修改文件,真的太难了!
- itunes设置视频播放质量的方法
- 学习Go编程