FWQ
Spring中FactoryBean与直接创建Bean的区别:它们如何创建和管理Bean?
Spring FactoryBean与创建Bean的 在Spring中,可以通过FactoryBean来创建Bean,与直接创建Bean(例如A b = new B();)存在一些区别。 FactoryBean FactoryBean是一个特殊的Bean,它负责创建和管理其他Bean。当注入FactoryBean时,你实际上注入的是FactoryBean提供的Bean,而不是FactoryBean本身。 实现原理 FactoryBean通过实现FactoryBean接口或扩展FactoryBeanSupport类来实现: 实现getObject()方法以创建Bean。 设置isSingleton属性以指示Bean是否为单例(默认为单例)。 创建Bean的差异 使用FactoryBean创建Bean与直接创建Bean的区别在于: 实例化时机:FactoryBean会在注入时实例化Bean,而直接创建Bean则是在程序启动时实例化。 单例性:FactoryBean的实例化是否为单例取决于isSingleton属性的设置,而直接创建Bean总是单例的。 生命周期:FactoryBean的Bean遵循Spring Bean的生命周期(初始化、销毁),而直接创建的Bean则没有生命周期。 案例代码解析 在提供的案例代码中: A b = new B();: 直接创建了B实例,这是一个非单例的Bean。 A…