BeanFactory

149 阅读1分钟

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);
}