<
>

Spring BeanFactory 与 FactoryBean 的区别详情

2022-05-06 15:29:22 来源:易采站长站 作者:

目录
区别和联系
BeanFactory
FactoryBean
总结

前言:

在 Spring 中, IOC 是很重要的概念,其本质就是 map 结构,存储容器和业务 Bean 信息。但是BeanFactory 和 FactoryBean 的区别却是一个很重要的知识点,在本文中将结合源码进行分析讲解。

区别和联系

BeanFactory

在 Spring 中,所有的 Bean 都是由 BeanFactory (也就是>

在英文中,Aware 是意识的意思,可以看到 BeanFactory 的生命周期流程包含了诸多的 Aware 接口:

SpringBeanFactory与FactoryBean的区别详情

以下为 BeanFactory 接口生命周期相关的一下方法,在项目开发中,ApplicationContextAware、InitializingBean 和 DisposableBean 有这广泛的应用。

BeanNameAware.setBeanName 用于设置 Bean 的名称
BeanClassLoaderAware.setBeanClassLoader 设置类加载器
BeanFactoryAware.setBeanFactory 设置 bean 工厂
ResourceLoaderAware.setResourceLoader 设置资源加载器
ApplicationEventPublisherAware.setApplicationEventPublisher 设置事件发布器
MessageSourceAware.setMessageSource 设置信息资源
ApplicationContextAware.setApplicationConhttps://www.easck.com/text 设置应用上下文
ServletContextAware.setServletContext 设置 Servlet 上下文
BeanPostProcessor.postProcessBeforeInitialization 前置处理器
Initwww.easck.comializingBean.afterPropertiesSet Bean 初始化操作
RootBeanDefinition.getInitMethodName 设置Bean 的初始化方法名称
BeanPostProcessor.postProcessAfterInitialization 后置处理器
DisposableBean.destroy 设置 Bean 销毁
RootBeanDefinition.getDestroyMethodName 获取 Bean 销毁的方法

默认情况下,如果直接调用 getBean 方法,将会返回一个工厂创造的对象,如果想获取 Bean 本身,那么需要添加 & 符号作为前缀进行处理。

SpringBeanFactory与FactoryBean的区别详情

FactoryBean

但是在某些具体的情况下,实例化 Bean 的操作会很复杂,按照其要求需要配置大量的属性,此时 Bean 的配置灵活性就受到了限制,此时就需要使用到 www.easck.comFactoryBean 了,该接口可以按照用户的需求来构造 Bean 对象,而不再遵守 Bean 生命周期的流程。Spring 自身就提供了很多 FactoryBean 的实现,>

SpringBeanFactory与FactoryBean的区别详情

总结

BeanFactory 提供一个>

到此这篇关于Spring BeanFactory 与 FactoryBean 的区别详情的文章就介绍到这了,更多相关Spring BeanFactory 与 FactoryBean 内容请搜索我们以前的文Xpqgi章或继续浏览下面的相关文章希望大家以后多多支持我们!

暂时禁止评论

微信扫一扫

易采站长站微信账号