Spring源码深度解析(一)

Spring源码深度解析(一)

一. 主要内容:

  1. 概念描述
  2. Spring整体架构及主要模块概述

二. 概念描述

  1. IoC :Inversion of Control,控制反转。

    到底反转了什么?

    假设具有依赖关系的对象

    在这里插入图片描述

    如果要调用A的method()方法,而method方法又依赖于B的某些处理。原生方式:

    A a = new A();
    B b = new B();
    a.setB(b);
    a.method();
    

    程序需要手动创建所需要的对象,且手动维护对象间的依赖。

    缺点:

    1. 程序处理复杂,且需要知道对象间的依赖关系;
    2. 对象之间强耦合。

    采用IoC方式:

    A a = IocContainer.getBean("a");
    a.method();
    

    对象之间的依赖关系交由IoC容器去维护,程序直接从容器中获取依赖装配完毕后的对象。获得依赖对象的过程被反转了。

  2. DI:Dependency Injection,依赖注入。

    所谓依赖注入,就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。可以理解为DI是实现IoC的策略。IoC和DI本质上是一回事

  3. Spring中的实现

    Spring提供了两种类型的IoC容器,分别是面向底层的基础容器BeanFactory和面向用户的扩展的高级容器ApplicationContext。

    用户通过XML文件或者注解,定义Bean及其之间的依赖关系。Spring容器启动时,会加载定义好的Bean及其依赖关系,封装成BeanDefinition,并根据容器类型的不同在相应的时机将Bean创建好。用户可以直接通过容器获取所需的Bean,执行相应的操作。

三. Spring整体架构及主要模块概述

在这里插入图片描述

  1. Core Container

    1. Beans & Core

      是整个Spring的基础支撑模块,所有Spring的模块都在此基础上构建。Beans & Core提供了IoC(控制反转)和DI(依赖注入)的特性,并基于经典的工厂模式和单例模式,抽象了BeanFactory相关的一系列概念。Spring容器中BeanDefinition的加载和解析、Bean的创建、Bean的生命周期管理等功能都在此模块中实现。

    2. Context

      Context模块构建于 Core 和 Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法 。此外,Context模块继承了Beans的特性,并在其基础上提供了大量的扩展,增加了如事件监听、资源加载、国际化等功能的支持。

    3. Expression Language

      提供了强大的表达式语言,支持在运行时查询和操作对象及其相关属性。

  2. Data Access/Integration

    提供了对JDBC、JMS、Redis、Mybatis、Hibernate等第三方框架或应用的的整合,简化了数据访问操作。

  3. Web

    Spring对Web应用的支持。其中最常用的Spring MVC就以经典的MVC模式,提供了Web应用中常用的URL映射、请求参数绑定、结果视图渲染等功能的支持。

  4. AOP

    AOP模块提供了一个符合 AOP联盟标准的面向切面编程的实现,可以自定义切面和切入点,从而将逻辑代码与需要动态增强的代码分开,降低它们之间的调合性 。

  5. Test

    Test模块支持使用 JUnit和 TestNG 对 Spring组件进行测试 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张申傲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值