• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于spring:一SpringIOC容器设计原理

java 搞代码 3年前 (2022-02-19) 24次浏览 已收录 0个评论

1. Sprin来源[email protected]搞@^&代*@码网g Ioc容器系列

对于Ioc容器的使用者来说,咱们常常接触到的BeanFactory和ApplicationContext都能够看成是容器的具体表现形式。如果深刻到Spring的实现中去看,所说的Ioc容器,实际上代表着一系列性能各异的容器产品,只是容器的性能有大有小,各有特点。Spring通过定义BeanDefinition来治理基于Spring的利用中的各种对象以及他们之间的相互依赖关系。对Ioc容器而言,BeanDefinition就是依赖反转模式中治理的对象依赖关系的数据抽象。容器外围数据结构的依赖反转性能都是围绕这个BeanDefinition的解决来实现。

2. Spring Ioc容器的设计

Ioc容器的接口设计图如下:

从接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory,是一条次要的BeanFactory设计门路。BeanFactory定义了根本的Ioc容器的标准。包含了getBean()办法。HierarchicalBeanFactory接口在继承了BeanFactory后,减少了getParentBeanFactory(),使BeanFactory具备了双亲Ioc容器的治理性能。在接下来的ConfigurableBeanFactory中,定义了一些对BeanFactory的配置性能,比方通过setParentBeanFactory()设置双亲Ioc容器,通过addBeanPostProcessor()配置Bean后置处理器等等。

第二条接口设计主线是,以ApplicationContext为外围的接口设计咱们罕用的利用上下文基本上都是ConfigurableApplicationContext或者WebApplicationContext的实现。在这个接口体系中,ListableBeanFactory和HierarchicalBeanFactory两个接口,连贯BeanFactory接口定义和ApplicationContext利用上下文的接口定义。在ListableBeanFactroy接口中,细化了许多BeanFactory的接口性能,比方定义了getBeanDefinitionNames()接口办法;对于HierarchiaclBeanFactory接口,咱们在前文曾经提到过;对于ApplicationContext接口,它通过继承MessageSource、ResourceLoader、ApplicationEventPublisher接口,在BeanFactory简略Ioc容器的根底上增加了许多对高级容器的个性的反对。

这里次要波及接口关系,而具体的Ioc容器都是在这个接口体系下实现的,比方DefaultListableBeanFactory,这个根本Ioc容器的实现就是实现了ConfigurableBeanFactory,从而成为一个简略Ioc容器的实现。像其余Ioc容器,比方XmlBeanfactory,都是在DefaultListableBeanFactory的根底上做扩大。

SpringIoc接口零碎是以BeanFactory和ApplicationContext为外围,而BeanFactory是Ioc容器的最根本接口,在ApplicationContext的设计中,一方面,能够看到它继承了BeanFactory接口体系的接口,具备了BeanFactory Ioc容器的基本功能。另一方面,通过继承MessageSource、ResourceLoader、ApplicationEventPublisher这些接口,Beanfactory为ApplicationContext赋予了更高级的Ioc容器个性。

对ApplicationContext而言,为了在Web环境中应用它,还设计了WebApplicationContext接口,而这个接口通过继承ThemeSource接口来裁减性能。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于spring:一SpringIOC容器设计原理
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址