AutowireCapableBeanFactory:可自动装配的BeanFactory
1、为已经实例化的对象装配属性,这些属性对象都是Spring管理的
2、实例化一个Bean,并自动装配Spring管理的属性,但是实例化的Bean可以不被Spring管理,此接口主要针对框架职位
没有向Spring托管Bean的应用。通过暴露此功能,Spring框架之外的程序也具有自动装配的能力。可以使用这个接口集成
其他框架,注入并不由Spring管理生命周期并已存在的实例,类似WebWork的Actions、Tapestry Page
自动装配的5中策略
1、AUTOWIRE_NO 没有外部(XML文件)定义的自动装配、不进行自动装配,但是BeanFactoryAware、注解渠道定义的人有效
2、AUTOWIRE_BY_NAME 按名称装配Bean的属性,调用属性的Setter方法进行注入
3、AUTOWIRE_BY_TYPE 按类型装配Bean的属性,调用属性的Setter方法进行注入
4、AUTOWIRE_CONSTRUCTOR 按构造方法进行装配,贪婪原则,优先惦使用参数个数多的构造方法,以便注入更多依赖
5、AUTOWIRE_AUTODETECT 自动匹配模式 Spring3.0被弃用。
主要方法
1、resolveDependency() 解析依赖
2、createBean(Class<T> beanClass) 创建一个指定class的实例
3、configureBean() 配置Bean
4、initializeBean() 初始化Bean,初始化过程应用BeanPostProcessor用到的applyBeanPostProcessorsBeforeInitialization()
、applyBeanPostProcessorsAfterInitialization()
5、destroyBean() 销毁bean
6、autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) 通过指定的自动装配策略来初始化一个Bean
7、autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck)通过指定的自动装配方式来对给定的Bean进行自动装配
8、applyBeanPropertyValues(Object existingBean, String beanName)将参数中指定了那么的Bean,注入给定实例当中
9、initializeBean(Object existingBean, String beanName)初始化参数中指定的Bean,调用任何其注册的回调函数,setBeanName,setBeanFactory等
10、resolveNamedBean(Class<T> requiredType)查找唯一符合指定类的实例,如果有则方法实例的名称和实例本身
BeanFactory源码体系解析--AutowireCapableBeanFactory二
于 2022-01-12 21:10:15 首次发布