183
技术社区[云栖]
Spring的IOC容器之BeanFactory
Spring的IOC容器是一个IOC Service Provider,但是Spring的IOC容器和IOC Service Provider是什么关系呢?
IOC Service Provider职责包括:1:对象创建管理,2:依赖注入服务
Spring的IOC容器职责包括:1:IOC Service Provider,2:对象生命周期管理,3:线程管理,4:企业服务集成,5:AOP支持等。。
Spring的IOC容器提供两种容器类型:1:BeanFactory,2:ApplicationContext
BeanFactory:基础容器类型,提供了完整的IOC服务支持。顾名思义,就是生产Bean的工厂。所以BeanFactory可以完成作为IOC Service Provider所有职责。那么BeanFactory完成职责后,是不是要提供一个方法来get你,OK,那么你可以不客气的getBean()。
不过BeanFactory就是接口,干活的还是要实现类来做,DefaultListableBeanFactory就是实现类。那么就是DefaultListableBeanFactory.getBean()吧.
因为BeanFactory接口只定义如果访问容器内管理的Bean的方法,但是你BeanFactory的Bean存在哪里?那么BeanDefinition负责保存Bean的所以必要信息,包括对象的Class类型,是否抽象,构造方法及其其他的属性等。当客户端向BeanFactory请求相应对象的时候,BeanFactory会通过这些信息为客户端返回一个完备可用的对象实例。
BeanDefinitionRegistry就是在BeanFactory的实现类中担当Bean注册管理的角色。
图书馆:BeanFactory
书:BeanDefinition
书架:BeanDefinitionRegistry
BeanDefinitionRegistry和BeanDefinition是什么关系?是依赖关系,依赖关系是类与类之间的连接,依赖总是单向的,一个BeanDefinitionRegistry依赖一个BeanDefinition的定义,BeanDefinitionRegistry中没有BeanDefinition的属性,BeanDefinition的实例是以方法参数的方式传入registerBeanDefinition(String beanName, BeanDefinition beanDefinition)方法中。
最后更新:2017-06-09 23:02:25