前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring源码深度解析(一)

Spring源码深度解析(一)

作者头像
张申傲
发布2020-09-03 15:43:00
1.4K0
发布2020-09-03 15:43:00
举报
文章被收录于专栏:漫漫架构路

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容器去维护,程序直接从容器中获取依赖装配完毕后的对象。获得依赖对象的过程被反转了。

  1. DI:Dependency Injection,依赖注入。 所谓依赖注入,就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。可以理解为DI是实现IoC的策略。IoC和DI本质上是一回事
  2. 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组件进行测试 。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring源码深度解析(一)
    • 一. 主要内容:
      • 二. 概念描述
        • 三. Spring整体架构及主要模块概述
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档