NightPxy 个人技术博客

SpringBoot - Spring - BeanFactory

Posted on By NightPxy

概述

BeanFactory 是 Spring容器关于对象管理的顶级接口
负责某个具体Bean的创建,访问等职责

在Spring设计中,容器本身不会直接参与Bean对象创建访问管理
而是将这部分职责解耦分离,委托给Bean对应的BeanFactory来完成

所以BeanFactory的核心是定义是

  • 根据BeanId或者Clazz信息 返回Bean
  • 根据BeanId或者Clazz信息 返回ObjectProvider (用于延迟加载获取Bean)

ObjectProvider

ObjectProvider 是 ObjectFactory 一个增强版实现

@FunctionalInterface
public interface ObjectFactory<T> {
	T getObject() throws BeansException;
}

public interface ObjectProvider<T> extends ObjectFactory<T>, Iterable<T> {
	.....
	
	@Nullable
	T getIfAvailable() throws BeansException;
	
	@Nullable
	T getIfUnique() throws BeansException;
	
	.....
}

ObjectFactory是一个纯粹的创建获取对象的接口定义
ObjectProvider的增强在于获取逻辑封装getIfAvailable,getIfUnique等
非常类似Optional实现,还是在创建获取对象

源码

BeanDefinition 是Spring容器对Bean对象如何管理的规则定义