BeanDefinition
isLazy
是不是一个懒加载的bean
单例懒加载bean
非加载的单例bean是在spring启动时创建的
懒加载的单例bean不是在spring启动时候创建的,而时在第一次获取bean时创建
autowireCandidate
当前bean是不是一个自动装配候选者
表示当前bean能不能自动注入给其他bean,默认true
primary
主bean
在进行自动注入时,通过属性类型,或方法参数可能会找到多个bean,如果多个bean存在一个主bean,<br>那么就直接把这个主bean注入给属性或方法
initMethodname
初始化方法
spring在创建bean的过程中会调用初始化方法
destroyMethodName
销毁方法
spring在销毁bean过程中会调用销毁方法
constructorArgumentValues
构造方法参数值
可以通过BeanDefinition中这个属性来给构造方法传递值
propertyValues
属性值
可以通过BeanDefinition中的这个属性来给bean的某些属性赋值
factoryBeanName
一个bean,可以通过另外一个bean的某个方法来创建
factoryMethodName
一个bean,可以通过另外一个bean的某个方法来创建
BeanFactory
bean工厂,可以根据某个bean的名字,或类型,或别名获取bean对象
BeanDefinitionRegistry
可以注册、保存、移除、获取某个BeanDefinition
SingletonBeanRegistry
可以直接注册、获取某个单例Bean
ListableBeanFactory
在BeanFactory的基础上,增加了其他功能,可以获取所有BeanDefinition的beanName,可以根据某个<br>类型获取对应的beanNames
HierarchicalBeanFactory
在BeanFactory的基础上,添加了获取父BeanFactory的功能
ConfigurableBeanFactory
在HierarchicalBeanFactory和SingletonBeanRegistry的基础上,添加了设置父BeanFactory,<br>类加载器、设置spring el表达式解析器、设置类型转化访问,可以添加BeanPostProcessor,<br>可以合并BeanDefinition,可以销毁Bean等等功能
AutowireCapableBeanFactory
是直接继承了BeanFactory,在BeanFactory继承上,支持在创建Bean的过程中对Bean<br>进行自动装配
AbstractBeanFactory
实现了ConfigurableBeanFactory接口,继承了Factory有BeanRegistrySupport,这个BeanFactory的功能<br>已经很全面了,但是不能自动装配和获取beanNames
ConfigurableListableBeanFactory
继承了ListableBeanFactory、AutowireCapableBeanFactory、ConfigurableBeanFactory
AbstractAutowireCapableBeanFactory
继承了AbstractBeanFactory,实现了AutowireCapableBeanFactory,拥有了<br>自动装配的功能
DefaultListableBeanFactory
继承了AbstractAutowireCapableBeanFactory,实现了ConfigurableListableBeanFactory接口和<br>BeanDefinitionRegistry接口
BeanFactoryPostProcessor
Bean工厂后置处理器
允许可以操作BeanFactory
本接口
可以获取BeanFactory,并操作
不能注册BeanDefinition,只能修改BeanDefinition
子接口
BeanDefinitionRegistryPostProcessor
可以注册BeanDefinition
TargetSource
proxy(代理对象)代理的不是target,而是TargetSource
一个proxy(代理对象)只能代理一个target,每次方法调用的目标也是唯一固定的target。但是,如果让proxy代理TargetSource,可以使得每次方法调用的target实例都不同
SingletonTargetSource
SingletonTargetSource通过构造方法传入一个目标bean对象,在使用getTarget()方法时,也只是将该对象直接返回;<br>并且这里isStatic()方法返回的是true,也就是说,Spring是可以缓存SingletonTargetSource的
PrototypeTargetSource
PrototypeTargetSource主要重写了getTarget()和releaseTarget()方法,<br>并且委托给newPrototypeInstance()和destroyPrototypeInstance()执行
CommonsPool2TargetSource
池化的TargetSource
CommonsPool2TargetSource的实现是将其委托给了ObjectPool进行,具体的也就是GenericObjectPool,其实现了ObjectPool接口
ThreadLocalTargetSource