BeanFactory与FactoryBean的学习

BeanFactory与FactoryBean的学习,第1张

一、Spring容器

容器管理Bean的生命周期,从创建到销毁的完整过程。

二、BeanFactory
  1. BeanFactory是接口,也是IOC容器最基本的形式,给具体的容器提供了规范。
  2. BeanFactory是Factory,是IOC容器或对象工厂,负责管理所有Bean(具有生产和管理功能)。
  3. BeanFactory的具体实现如常见的:DefaultListableBeanFactory、XMLBeanFactory、ApplicationContextBeanFactory等。这些具体的容器都是在原始BeanFactory基础上进行了功能拓展,原始BeanFactory没有AOP、Web应用等功能。
  4. BeanFactory仅有6个方法供客户调用:
    boolean containsBean(String beanName) 判断工厂中是否包含给定名称的bean定义,若有则返回true。
    Object getBean(String) 返回给定名称注册的bean实例。根据bean的配置情况,如果是singleton模式将返回一个共享实例,否则将返回一个新建的实例,如果没有找到指定bean,该方法可能会抛出异常。
    Object getBean(String, Class) 返回以给定名称注册的bean实例,并转换为给定class类型。
    Class getType(String name) 返回给定名称的bean的Class,如果没有找到指定的bean实例,则排除NoSuchBeanDefinitionException异常。
    boolean isSingleton(String) 判断给定名称的bean定义是否为单例模式。
    String[] getAliases(String name) 返回给定bean名称的所有别名(具有生产功能) 。
三、 FactoryBean
  1. FactoryBean也是接口,为IOC容器中Bean的实现提供了灵活的方式,FactoryBean在IOC容器基础上加了装饰者和简单工厂模式,通过getObject()方法可以灵活配置Bean。
  2. FactoryBean是一个能生产或装饰Bean的工厂Bean。
  3. 从Spring3.0起,FactoryBean支持泛型。从FactoryBean中获取的对象是FactoryBean的getObject()方法返回的对象,不是FactoryBean本身这个Bean,要获取FactoryBean对象需要在id前加$符号。要想获取FactoryBean的实现类,就要getBean(&BeanName),在BeanName之前加上&。
  4. FactoryBean中定义了以下3个方法:
    TgetObject():返回由FactoryBean创建的Bean实例,如果isSingleton()返回true,则该实例会放到Spring容器中单实例缓存池中;
    booleanisSingleton():返回由FactoryBean创建的Bean实例的作用域是singleton还是prototype;
    ClassgetObjectType():返回FactoryBean创建的Bean类型。

 第一次发布,有问题后续再修改。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/868484.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存