一、概述

  对于想要拥有自动装配能力,并且想要把这种能力暴露给外部应用BeanFactory类需要实现此接口。

  正常情况下不要使用此接口,应该更倾向于使用BeanFactory或者ListableBeanFactory接口。

  此接口主要是针对框架之外,没有向Spring托管的Bean的应用。通过暴露此功能,Spring框架之外的程序,具有自动装配Spring的功能

  需要注意的是ApplicationContext并没有实现此接口。因为应用代码很少使用此功能。如果确实需要的话可以调用ApplicationContext.getAutowireCapableBeanFactory()的方法,来获取此接口的实例

  如果一个类实现了此接口,那么很大程度上它还需要实现BeanFactoryWare接口。它可以在应用上下文中返回BeanFactory;

  四个常量

  int AUTOWIRE_NO = 0; 常量,用于标识外部自动装配功能是否可用。但是此标识不影响正常的(基于注解的等)自动装配功能的使用

  int AUTOWIRE_BY_NAME = 1; 标识按名装配的常量

  int AUTOWIRE_BY_TYPE = 2;标识按类型自动装配的常量

  int AUTOWIRE_CONSTRCTOR = 3;标识按照贪婪策略匹配出的最符合的构造方法来自动装配的常量

  int AUTOwIRE_DETECTE = 4;标识自动识别一种装配策略来实现自动装配的常量

  创建一个给定Class的实例。

  <T> T createBean(Class<T> beanClass) throws BeansException;

  通过调用给定Bean的after-instantiation及post-processing接口,对bean进行配置。

  void autowireBean(Object existingBean) throws BeansException;

  配置参数中指定的bean,包括自动装配其域,对其应用如setBeanName功能的回调函数。

  Object configureBean(Object existingBean, String beanName) throws BeansException;

  创建一个指定class的实例,通过参数可以指定其自动装配模式(by-name or by-type).

  Object createBean(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;

  通过指定的自动装配策略来初始化一个Bean。

  Object autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;

  通过指定的自动装配方式来对给定的Bean进行自动装配。

  void autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck) throws BeansException;

  将参数中指定了那么的Bean,注入给定实例当中

  void applyBeanPropertyValues(Object existingBean, String beanName) throws BeansException;

  初始化参数中指定的Bean,调用任何其注册的回调函数如setBeanName、setBeanFactory等。

  Object initializeBean(Object existingBean, String beanName) throws BeansException;

  调用参数中指定Bean的postProcessBeforeInitialization方法

  Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName) throws BeansException

  调用参数中指定Bean的postProcessAfterInitialization方法

  Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName) throws BeansException;

  void destroyBean(Object existingBean);销毁参数中指定的Bean,同时调用此Bean上的DisposableBean和DestructionAwareBeanPostProcessors方法

  <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException;销毁参数中指定的Bean,同时调用此Bean上的DisposableBean和DestructionAwareBeanPostProcessors方法

  Object resolveDependency(DependencyDescriptor descriptor, String requestingBeanName) throws BeansException; 查找唯一符合指定类的实例,如果有,则返回实例的名字和实例本身

  Object resolveDependency(DependencyDescriptor descriptor, String requestingBeanName, 解析出在Factory中与指定Bean有指定依赖关系的Bean
  Set<String> autowiredBeanNames, TypeConverter typeConverter) throws BeansException; 解析指定Bean在Factory中的依赖关系

  

AutowireCapableBeanFactory源码详解的更多相关文章

  1. Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解

    Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解 今天主要理一下StreamingContext的启动过程,其中最为重要的就是Jo ...

  2. spring事务详解(三)源码详解

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  3. 条件随机场之CRF++源码详解-预测

    这篇文章主要讲解CRF++实现预测的过程,预测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易. 预测 上一篇条件随机场训练的源码详解中,有一个地方并没有 ...

  4. [转]Linux内核源码详解--iostat

    Linux内核源码详解——命令篇之iostat 转自:http://www.cnblogs.com/york-hust/p/4846497.html 本文主要分析了Linux的iostat命令的源码, ...

  5. saltstack源码详解一

    目录 初识源码流程 入口 1.grains.items 2.pillar.items 2/3: 是否可以用python脚本实现 总结pillar源码分析: @(python之路)[saltstack源 ...

  6. Shiro 登录认证源码详解

    Shiro 登录认证源码详解 Apache Shiro 是一个强大且灵活的 Java 开源安全框架,拥有登录认证.授权管理.企业级会话管理和加密等功能,相比 Spring Security 来说要更加 ...

  7. udhcp源码详解(五) 之DHCP包--options字段

    中间有很长一段时间没有更新udhcp源码详解的博客,主要是源码里的函数太多,不知道要不要一个一个讲下去,要知道讲DHCP的实现理论的话一篇博文也就可以大致的讲完,但实现的源码却要关心很多的问题,比如说 ...

  8. Activiti架构分析及源码详解

    目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2. ...

  9. 源码详解系列(六) ------ 全面讲解druid的使用和源码

    简介 druid是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,druid还扩展 ...

随机推荐

  1. android 按照拼音模糊查询中如何把字符转换成拼音

    http://files.cnblogs.com/liaolandemengxiang/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9.rar 首先转换成的 ...

  2. 1. Ubuntu下MongoDB的安装和使用

    一.MongoDB介绍 MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似jso ...

  3. ReLU为什么比Sigmoid效果好

    附:双曲函数类似于常见的(也叫圆函数的)三角函数.基本双曲函数是双曲正弦"sinh",双曲余弦"cosh",从它们导出双曲正切"tanh" ...

  4. Windows核心编程:第3章 内核对象

    Github https://github.com/gongluck/Windows-Core-Program.git //第3章 内核对象.cpp: 定义应用程序的入口点. // #include ...

  5. 介绍 Scratch 3.0:扩展编码创造力

    在过去十年中,全世界数百万儿童使用Scratch编写自己的互动游戏,故事,动画等. 这种磅礴的创造力激励我们继续扩展和改进Scratch,让世界各地的孩子都有新的机会用新技术创造性地表达自己. 今天, ...

  6. JavaScript基础(3)-JS中的面向对象、定时器、BOM、位置信息

    一.创建对象的几种常用方式. 1.使用Object或对象字面量创建对象: a.使用Object()内置的构造函数来创建对象,例如: var student = new Object(); // 创建一 ...

  7. 牛客第二场 C.message(计算几何+二分)

    题目传送:https://www.nowcoder.com/acm/contest/140/C 题意:有n个云层,每个云层可以表示为y=ax+b.每个飞机的航线可以表示为时间x时,坐标为(x,cx+d ...

  8. Windows 64位系统安装Apache2.4

    Windows 64位系统安装Apache2.4 来自:百度经验:jingyan.baidu.com 现在大部分一键安装包多是32位的,并不支持64位,直接在64位的系统上使用会报错的,所以我这里就来 ...

  9. 设置多台机器linux服务器ssh相互无密码访问

    在每台服务器上都执行ssh-keygen -t rsa生成密钥对: $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter ...

  10. 【xsy3355】图 思维

    题目大意:给你一个n个点m条无向边的图,问这个图是否能够: 1,被四染色(用四种颜色给图染色,且相邻点颜色不同). 2,找出一个奇环,满足在原图中去掉这个奇环后每个点依然相邻. 请输出1或者2中的任意 ...