spring BeanFactory 家族介绍
/*** 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 家族介绍相关推荐
- Spring BeanFactory实例化Bean的过程
Spring BeanFactory实例化Bean的过程 Bean的实例化是Bean生命周期的一个非常重要的环节,一般来说,初始化后,就不再改变了,直到bean被从BeanFactory中显式的移除. ...
- 服务监控 Spring Boot Actuator 介绍
服务监控 Spring Boot Actuator 介绍 1. 概述 在本文中,我们将介绍Spring Boot Actuator.首先介绍一些Actuator的基础知识,然后详细讨论Spring B ...
- spring之基本介绍以及老版本框架的下载地址
spring之基本介绍以及老版本框架的下载地址 第一:为什么要学习spring?学习spring能为我们在工作中的日常开发带来什么好处? 首先来了解一下spring:spring是一种开源的分层的相对 ...
- spring的DI,IOP,AOC,Spring的简单介绍
回顾: 1. mybatis的性能优化.一级缓存.减轻数据库的压力.默认开启.一级缓存是线程级别,sqlSession,缓存数据的map就放在sqlSession中的PerpetualCache的中. ...
- 夯实Spring系列|总览介绍
文章目录 系列文章 番外篇 1.文章说明 2.整理目的 3.Spring 核心特性 4.数据存储(Data Access) 5.Web 技术 6.技术整合 7.测试(Testing) 8.Java 版 ...
- spring的InitializingBean介绍
http://blog.csdn.net/hhdem/article/details/1802701 InitializingBean Spirng的InitializingBean为bean提供了定 ...
- Spring Security 基本介绍,初窥路径
Spring Security 基本介绍和环境搭建 实验介绍 Spring Security 是一个非常强大的身份验证和授权控制框架.为了满足企业项目的不同需求,它提供了很多定制化开发的解决方案,通过 ...
- Spring Cloud Gateway介绍(二)
Spring Cloud Gateway介绍(一) 全局Filters GlobalFilter与GatewayFilter具有一样的接口. 这些全局过滤器都有对应的配置类,例如: org.sprin ...
- Spring BeanFactory 容器
转载自 Spring BeanFactory 容器 Sping 的 BeanFactory 容器 这是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.spri ...
最新文章
- MATLAB判断三角形成立的编程,Triangulation 划分三角形网络时用到的大量算法和测试例程 matlab 259万源代码下载- www.pudn.com...
- Sci-Hub重生了,这回用上了分布式网络
- python之变量操作
- 分解得到的时频域特征_【推荐文章】基于变分模态分解和广义Warblet变换的齿轮故障诊断...
- 台安变频器n2按键说明_台安变频器N2型号说明参数设置故障代码及故障解决方法...
- java实现jsonscheme_java – jsonschema和日期类型
- 【2016年第3期】中国电信大数据应用实践
- 老程序员也搞不定的 4 个巨坑!
- 在python中类型属于对象变量是没有类型的_如何理解python对象有类型,变量无类型...
- 百度地图API画多边型,测面积
- linux初始化驱动程序,linux驱动程序什么时间初始化
- 2006年最一针见血的199句话!经典
- 计算机专业课题 结题报告,计算机结题报告.doc
- LaTeX调整页眉宽度适应文本
- .Net中Web增加加密狗管理
- windows CE 4.2、5.0、6.0下载地址
- 基于java的公链,第一个基于Java的BFT区块链 – Alienchain外星链号称以太坊Java版
- c51汇编语言 pdf,单片机汇编语言经典一百例.pdf
- 如何确定抽样统计的最小样本量(附:随机抽样统计的抽样误差Excel计算表格)
- 小睿家庭云可以刷linux系统吗,小睿家庭云刷机方法,刷入openwrt pandorabox padavan方法,刷路由器固件...
热门文章
- keil Software pack离线下载方法
- 编写多格式音乐播放器(扫盲)
- 看看iPhone 11 Pro Max的内部元器件供应商都有谁!
- vscode全局搜索指定文件夹
- 禁用vscode全局搜索时 replace Preview功能
- ThinkPHP自动化为已经上传的图片添加「 响应式」水印(数据库字段部分)
- 招才猫显示服务器开小差,网络罢工开小差?宽带自排障手册分分钟解决!
- STM32新建工程所需文件介绍
- html和css原理,html和css概括总结
- ups监控软件测试表格,《UPS及EPS安装检验批质量验收记录》表格示例及填写说明...