/*** BeanFactory作为最原始同时也最重要的Ioc容器,它主要的功能是为依赖注入 (DI) 提供支持, BeanFactory 和相关的接口,比如,BeanFactoryAware、 * DisposableBean、InitializingBean,仍旧保留在 Spring 中,主要目的是向后兼容已经存在的和那些 Spring 整合在一起的第三方框架。在 Spring 中* ,有大量对 BeanFactory 接口的实现。其中,最常被使用的是 XmlBeanFactory 类。这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一* 个被配置化的系统或者应用。在资源宝贵的移动设备或者基于applet的应用当中, BeanFactory 会被优先选择。否则,一般使用的是 ApplicationContext* * 这里定义的只是一系列的接口方法,通过这一系列的BeanFactory接口,可以使用不同的Bean的检索方法很方便地从Ioc容器中得到需要的Bean,从而忽略具体* 的Ioc容器的实现,从这个角度上看,这些检索方法代表的是最为基本的容器入口。** @author Rod Johnson* @author Juergen Hoeller* @author Chris Beams* @since 13 April 2001*/
public interface BeanFactory {/*** 转定义符"&" 用来引用实例,或把它和工厂产生的Bean区分开,就是说,如果一个FactoryBean的名字为a,那么,&a会得到那个Factory** FactoryBean和BeanFactory 是在Spring中使用最为频繁的类,它们在拼写上很相似。一个是Factory,也就是Ioc容器或对象工厂;一个* 是Bean。在Spring中,所有的Bean都是由BeanFactory(也就是Ioc容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Be* an,而是一个能产生或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。*/String FACTORY_BEAN_PREFIX = "&";/*** 五个不同形式的getBean方法,获取实例* @param name 检索所用的Bean名* @return Object(<T> T) 实例对象* @throws BeansException 如果Bean不能取得*/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.* @param name 搜索所用的Bean名* @return boolean 是否包含其中*/boolean containsBean(String name);/*** 查询指定名字的Bean是否是Singleton类型的Bean.* 对于Singleton属性,可以在BeanDefinition指定.* @param name 搜索所用的Bean名* @return boolean 是否包是Singleton* @throws NoSuchBeanDefinitionException 没有找到Bean*/boolean isSingleton(String name) throws NoSuchBeanDefinitionException;/*** 查询指定名字的Bean是否是Prototype类型的。* 与Singleton属性一样,可以在BeanDefinition指定.* @param name 搜索所用的Bean名* @return boolean 是否包是Prototype* @throws NoSuchBeanDefinitionException 没有找到Bean*/boolean isPrototype(String name) throws NoSuchBeanDefinitionException;/*** 查询指定了名字的Bean的Class类型是否是特定的Class类型.* @param name 搜索所用的Bean名* @param typeToMatch 匹配类型* @return boolean 是否是特定类型* @throws NoSuchBeanDefinitionException 没有找到Bean*/boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;/*** 查询指定名字的Bean的Class类型.* @param name 搜索所用的Bean名* @return 指定的Bean或者null(没有找到合适的Bean)* @throws NoSuchBeanDefinitionException 没有找到Bean*/Class<?> getType(String name) throws NoSuchBeanDefinitionException;/*** 查询指定了名字的Bean的所有别名,这些都是在BeanDefinition中定义的* @param name 搜索所用的Bean名* @return 指定名字的Bean的所有别名 或者一个空的数组*/String[] getAliases(String name);
}

图片为BeanFactory整个家族的uml图,比较乱,后面会将其分解

spring BeanFactory 家族介绍相关推荐

  1. Spring BeanFactory实例化Bean的过程

    Spring BeanFactory实例化Bean的过程 Bean的实例化是Bean生命周期的一个非常重要的环节,一般来说,初始化后,就不再改变了,直到bean被从BeanFactory中显式的移除. ...

  2. 服务监控 Spring Boot Actuator 介绍

    服务监控 Spring Boot Actuator 介绍 1. 概述 在本文中,我们将介绍Spring Boot Actuator.首先介绍一些Actuator的基础知识,然后详细讨论Spring B ...

  3. spring之基本介绍以及老版本框架的下载地址

    spring之基本介绍以及老版本框架的下载地址 第一:为什么要学习spring?学习spring能为我们在工作中的日常开发带来什么好处? 首先来了解一下spring:spring是一种开源的分层的相对 ...

  4. spring的DI,IOP,AOC,Spring的简单介绍

    回顾: 1. mybatis的性能优化.一级缓存.减轻数据库的压力.默认开启.一级缓存是线程级别,sqlSession,缓存数据的map就放在sqlSession中的PerpetualCache的中. ...

  5. 夯实Spring系列|总览介绍

    文章目录 系列文章 番外篇 1.文章说明 2.整理目的 3.Spring 核心特性 4.数据存储(Data Access) 5.Web 技术 6.技术整合 7.测试(Testing) 8.Java 版 ...

  6. spring的InitializingBean介绍

    http://blog.csdn.net/hhdem/article/details/1802701 InitializingBean Spirng的InitializingBean为bean提供了定 ...

  7. Spring Security 基本介绍,初窥路径

    Spring Security 基本介绍和环境搭建 实验介绍 Spring Security 是一个非常强大的身份验证和授权控制框架.为了满足企业项目的不同需求,它提供了很多定制化开发的解决方案,通过 ...

  8. Spring Cloud Gateway介绍(二)

    Spring Cloud Gateway介绍(一) 全局Filters GlobalFilter与GatewayFilter具有一样的接口. 这些全局过滤器都有对应的配置类,例如: org.sprin ...

  9. Spring BeanFactory 容器

    转载自  Spring BeanFactory 容器 Sping 的 BeanFactory 容器 这是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.spri ...

最新文章

  1. MATLAB判断三角形成立的编程,Triangulation 划分三角形网络时用到的大量算法和测试例程 matlab 259万源代码下载- www.pudn.com...
  2. Sci-Hub重生了,这回用上了分布式网络
  3. python之变量操作
  4. 分解得到的时频域特征_【推荐文章】基于变分模态分解和广义Warblet变换的齿轮故障诊断...
  5. 台安变频器n2按键说明_台安变频器N2型号说明参数设置故障代码及故障解决方法...
  6. java实现jsonscheme_java – jsonschema和日期类型
  7. 【2016年第3期】中国电信大数据应用实践
  8. 老程序员也搞不定的 4 个巨坑!
  9. 在python中类型属于对象变量是没有类型的_如何理解python对象有类型,变量无类型...
  10. 百度地图API画多边型,测面积
  11. linux初始化驱动程序,linux驱动程序什么时间初始化
  12. 2006年最一针见血的199句话!经典
  13. 计算机专业课题 结题报告,计算机结题报告.doc
  14. LaTeX调整页眉宽度适应文本
  15. .Net中Web增加加密狗管理
  16. windows CE 4.2、5.0、6.0下载地址
  17. 基于java的公链,第一个基于Java的BFT区块链 – Alienchain外星链号称以太坊Java版
  18. c51汇编语言 pdf,单片机汇编语言经典一百例.pdf
  19. 如何确定抽样统计的最小样本量(附:随机抽样统计的抽样误差Excel计算表格)
  20. 小睿家庭云可以刷linux系统吗,小睿家庭云刷机方法,刷入openwrt pandorabox padavan方法,刷路由器固件...

热门文章

  1. keil Software pack离线下载方法
  2. 编写多格式音乐播放器(扫盲)
  3. 看看iPhone 11 Pro Max的内部元器件供应商都有谁!
  4. vscode全局搜索指定文件夹
  5. 禁用vscode全局搜索时 replace Preview功能
  6. ThinkPHP自动化为已经上传的图片添加「 响应式」水印(数据库字段部分)
  7. 招才猫显示服务器开小差,网络罢工开小差?宽带自排障手册分分钟解决!
  8. STM32新建工程所需文件介绍
  9. html和css原理,html和css概括总结
  10. ups监控软件测试表格,《UPS及EPS安装检验批质量验收记录》表格示例及填写说明...