package org.springframework.beans.factory; import org.springframework.beans.BeansException; import org.springframework.core.ResolvableType; import org.springframework.lang.Nullable; public interface BeanFactory { String FACTORY_BEAN_PREFIX = "&"; Object getBean(String name) throws BeansException; <T> T getBean(String name, Class<T> requiredType) throws BeansException; Object getBean(String name, Object... args) throws BeansException; <T> T getBean(Class<T> requiredType) throws BeansException; <T> T getBean(Class<T> requiredType, Object... args) throws BeansException; <T> ObjectProvider<T> getBeanProvider(Class<T> requiredType); <T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType); boolean containsBean(String name); boolean isSingleton(String name) throws NoSuchBeanDefinitionException; boolean isPrototype(String name) throws NoSuchBeanDefinitionException; boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException; boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException; @Nullable Class<?> getType(String name) throws NoSuchBeanDefinitionException; @Nullable Class<?> getType(String name, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException; String[] getAliases(String name); }
String FACTORY_BEAN_PREFIX = "&"; 这句代码定义在BeanFactory这个最顶级的接口中。他的作用是如果在使用beanName获取Bean时,在BeanName前添加这个前缀, 那么使用这个BeanName获得的Bean实例是其所在FactoryBean的实例,也就是实现 FactoryBean 接口的那个类的Bean实例。
通过Bean名称获取Bean
根据名称和类型获取Bean
通过name和对象参数获取Bean
通过类型获取Bean
通过类型和参数获取Bean
返回指定ObjectProvider,提供延迟加载功能
Class,Field,Method 类型的延迟加载功能
容器中是否包含名字为name的Bean
Bean是否是单例
判断bean是不是原型
检查具有给定名称的bean是否与指定的类型(Class,Field,Method 类型)匹配。
检查具有给定名称的bean是否与指定的类型匹配。
确定具有给定名称的bean的类型
确定具有给定名称的bean的类型
返回给定bean名称的别名
package javax.naming.spi; import java.util.Hashtable; import javax.naming.*; public interface ObjectFactory { //为指定对象和环境创建一个对象实例 public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception; }
BeanFactory和ObjectFactory都提供依赖查找的能力
原文: https://rumenz.com/rumenbiji/Spring-BeanFactory-ObjectFactory.html