BeanFactory源码解析
Spring版本:4.X
public interface BeanFactory {
/**这里主要用与区分是获取FactoryBean,
*还是获取FactoryBean创建的bean。
*如果有&,获取的是FactoryBean;
*如果没&,获取的是FactoryBean创建的bean
*/
String FACTORY_BEAN_PREFIX = "&";
//五种不同的getBean(..)方法
Object getBean(String name) throws BeansException;
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
/**是否包含某个Bean
*陷阱:这里的bean,不管类是不是抽象类,
*是不是在容器中,是不是懒加载,只要符合,都会返回true;
*所以,如果返回true,也不一定能用getBean()方法获取实例。
*/
boolean containsBean(String name);
//某个Bean是不是单例
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
//某个Bean是不是原型(多例)
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
//两种不同的isTypeMatch(..)方法,来判断某个Bean的名称和类型是否匹配
boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
//根据名称获取类型
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
//根据名称获取别名
String[] getAliases(String name);
}