zoukankan      html  css  js  c++  java
  • AutowireCapableBeanFactory源码详解

    一、概述

      对于想要拥有自动装配能力,并且想要把这种能力暴露给外部应用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中的依赖关系

      

  • 相关阅读:
    图像处理------调整亮度与对比度 分类: 视频图像处理 2015-07-24 09:51 28人阅读 评论(0) 收藏
    图像处理--------应用卷积– 轧花与边缘检测 分类: 视频图像处理 2015-07-24 09:50 24人阅读 评论(0) 收藏
    图像处理------简单数字水印
    图像处理------应用卷积一实现噪声消去 分类: 视频图像处理 2015-07-24 09:36 27人阅读 评论(0) 收藏
    图像处理------光束效果 分类: 视频图像处理 2015-07-24 09:34 30人阅读 评论(0) 收藏
    图像处理------移动模糊 分类: 视频图像处理 2015-07-24 09:33 26人阅读 评论(0) 收藏
    图像处理------高斯模糊 分类: 视频图像处理 2015-07-24 09:32 29人阅读 评论(0) 收藏
    柏林噪声产生火焰等纹理 分类: 视频图像处理 2015-07-24 09:32 29人阅读 评论(0) 收藏
    图像处理------快速均值模糊(Box Blur) 分类: 视频图像处理 2015-07-24 09:28 30人阅读 评论(0) 收藏
    闭包和装饰器
  • 原文地址:https://www.cnblogs.com/hanxue112253/p/10119141.html
Copyright © 2011-2022 走看看