一、BeanFacotry
访问一个Spring bean容器的根接口。这是一个Bean容器基本客户端视图;进一步的接口如ListableBeanFactory和configurablebeanfactory供特定用途。
此接口由包含许多bean定义的对象来实现,每个对象都有唯一的字符串名称标识。根据bean定义,工厂将返回被容器包含的对象(原型设计模式)的任何一个独立实例,或者单个共享实例(一个较好选择的单例设计模式,其中实例是工厂范围内的一个单例)。将返回哪种类型的实例取决于bean工厂配置:API是相同的。自Spring2以来,根据具体的应用程序上下文(例如Web环境中的“请求”和“会话”范围)可获得更多的作用域。
package org.springframework.beans.factory; public interface BeanFactory { /** * 用来引用一个实例,或把它和工厂产生的Bean区分开,就是说,如果一个FactoryBean的名字为a,那么,$a会得到那个Factory */ 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; boolean containsBean(String name); // 是否存在 boolean isSingleton(String name) throws NoSuchBeanDefinitionException;// 是否为单实例 boolean isPrototype(String name) throws NoSuchBeanDefinitionException;// 是否为原型(多实例) boolean isTypeMatch(String name, Class<?> targetType) throws NoSuchBeanDefinitionException;// 名称、类型是否匹配 Class<?> getType(String name) throws NoSuchBeanDefinitionException; // 获取类型 String[] getAliases(String name);// 根据实例的名字获取实例的别名 }