③. HierarchicalBeanFactory(继承树的工厂)
①. 主要用于定义父子工厂(父子容器)
getParentBeanFactory():获取它的父工厂
containsLocalBean():判断工厂里面包不包含本地的一些bean
②. 在spring的里面BeanFactory(Bean的工厂)下还有抽象工厂,但这些抽象工厂都没有创建产品的方法,相当于一个产品线,做一个产品,它的一个抽象工厂只是相当于对工厂的功能增强,跟产品没关系,所以它的这些抽象工厂不成立
③. 抽象工厂想要成立就是:有总厂(BeanFactory) 总厂下的分厂要造产品的,对产品的接口会有其他规划
④. ListableBeanFacotory接口详解
①. 主要保存了ioc容器中的核心信息
getBeanDefinitionCount():获取bean定义信息的总和
getBeanDefinitionNames():获取所有bean定义信息的名字
getBeanNamesForType():还能按照类型获取bean名字
②. 具体来查看下结构图
下面的这个DefaultListableBeanFactory就是我们的档案库
AbstractApplicationContext是环境类
③. 详解AbstractApplicationContext如何是坏境类
ResourceLoader资源读取器下的一个接口 == ResourcePatternResolver
抽象IOC容器(AbstractApplicationContext)拥有了资源加载器
(ResourcePatternResolver)的接口
而且在对象一创建的时候,就拿到了,是用getResourcePatternResolver这个方法拿到的
这揭秘了一个策略模式的环境类就是AbstractApplicationContext
就是ioc容器拿到资源解析器,资源解析器只要传的不一样,IOC容器就可以从不一样的地方获取资源
④. AnnotationConfigApplicationContext(ioc)容器-
>ConfigurableApplicationContext->ApplicationContext实现->ListableBeanFacotory
我们用的IOC容器也是具有ListableBeanFacotory提供的功能,这个功能就是能列举出所有的bean
⑤. 来到AbstractApplicationContext实现里面,还能看到一个bean的定义信息存在了哪个地方
我们用的是抽象的IOC容器(AbstractApplicationContext),抽象
(AbstractApplicationContext)还有一个GenericApplicationContext
在GenericApplicationContext这个类里面包含了一个叫DefaultListableBeanFactory,
我们用的IOC容器的父类GenericApplicationContext,父类GenericApplicationContext里
面有一个子属性,但这个子属性里面叫DefaultListableBeanFactory,这个
DefaultListableBeanFactory是被组合进来的
现在又有一个组合关系就是:GenericApplicationContext组合了一个
DefaultListableBeanFactory