BeanFactory

小熊熊發表於2019-02-26

BeanFactory:定義獲取bean及bean的各種屬性

  • AutowireCapableBeanFactory 新增整合其他框架功能.如果整合WebWork則可以使用Spring對Actions等進行管理.

  • HierarchicalBeanFactory 提供父容器的訪問功能

  • ConfigurableBeanFactory 如名,提供factory的配置功能,眼花繚亂好多api

  • ConfigurableListableBeanFactory 集大成者,提供解析,修改bean定義,並與初始化單例.

  • ListableBeanFactory 提供容器內bean例項的列舉功能.這邊不會考慮父容器內的例項.

public interface BeanFactory {

    //指定factoryBean的字首,Bean工廠裡面的例項任然有可能是一個BeanFactory,如果是個BeanFactory
    //則可以通過如下方法返回一個BeanFactory,factory.getBean("&beanfactoryName");
    String FACTORY_BEAN_PREFIX = "&";

    //返回特定名字的例項
    Object getBean(String name) throws BeansException;

    //返回特定名稱及特定型別的例項
    <T> T getBean(String name, Class<T> requiredType) throws BeansException;

     //返回特定型別的bean例項,如果不存在或存在不止一個均報錯
    <T> T getBean(Class<T> requiredType) throws BeansException;

     //根據名字及bean建立時候的引數建立bean
    Object getBean(String name, Object... args) throws BeansException;

    //根據特定的construct args建立prototype的bean
    <T> T getBean(Class<T> requiredType, Object... args) throws BeansException;

    //判斷是否包含特定名字的例項
    boolean containsBean(String name);

    //判斷是否是單例的
    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;

    //判斷是否是多例的
    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

    //判斷特定名字的例項和對應的type是否匹配
    boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;

    //判斷特定名字的例項和對應的type是否匹配
    boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;

    //返回特定名稱bean的型別
    Class<?> getType(String name) throws NoSuchBeanDefinitionException;

    //返回特定name bean的別名
    String[] getAliases(String name);
}
複製程式碼

相關文章