Spring-IOC源码解读1-整体设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-IOC源码解读1-整体设计相关的知识,希望对你有一定的参考价值。

1. SpringIOC提供了一个基本的javabean容器,通过IOC模式管理依赖关系,并通过依赖注入和AOP增强了为javabean这样的pojo对象赋予事务管理,生命周期管理等基本功能。
2. SpringIOC容器中注入方式有setter注入,构造器注入,接口注入,其中setter注入和构造器注入是主要注入方式
3. 两个主要的容器系列:一个是实现BeanFactory接口的简单容器系列,另一个是Application应用上下文系列。

技术分享

4. 在Spring提供的基本IOC容器的接口定义和实现的基础上,Spring通过定义BeanDefinition来管理基于Spring的应用中各种对象及他们之间的相互依赖关系。BeanDefinition抽象了我们对bean的定义,是让容器起作用的主要数据类型。对IOC容器来说,BeanDefinition就是依赖反转模式中管理的对象依赖关系的数据对象,也是容器实现依赖反转功能的核心数据结构,依赖反转功能都是围绕对这个Beandefinition的处理来完成的。

5. XmlBeanFactory的设计原理:XmlBeanFactory继承自DefaultListableBeanFactory(在Spring中实际是作为一个默认的功能完善的IOC容器来使用的,后面可以看到许多容器的实现都是扩展自此类)并增加了新的功能,使他可以读取以xml文件方式定义的BeanDefininition.

技术分享

6. XmlBeanFactory使用示例:

public void testXmlBeanFactory() {
        Resource res = new ClassPathResource("spring-beans.xml");
        BeanFactory fac = new XmlBeanFactory(res);
        Person p = fac.getBean("person", Person.class);
        System.out.println(p);
    }

7. ApplicationContext的设计原理: ApplicationContext是一个高级形态意义的IOC容器,他除了提供基本IOC容器的功能之外,还提供了许多附加服务,例如:

  •  支持不同的信息源:继承了MessageResource接口
  •  访问资源:继承了DefaultResourceLoader及其子类,故可以支持 ResourceLoader。
  •  支持应用事件:继承了ApplicationEventPublisher.

技术分享



以上是关于Spring-IOC源码解读1-整体设计的主要内容,如果未能解决你的问题,请参考以下文章

Spring-IOC源码解读2.3-BeanDefinition的注册

Spring-IOC源码解读2.1-BeanDefinition的Resource定位

Spring-IOC源码解读3-依赖注入

源码解读Dubbo分层设计思想

Spring:源码解读Spring IOC原理

vue源码解读预热-0