为了账号安全,请及时绑定邮箱和手机立即绑定

源码学习之Spring (系统架构简单解析)

标签:
Java Spring

Spring Framework 系统架构总览图

file

Spring Framework的模块依赖关系图

file

Spring Framework各个模块功能说明

Spring核心模块

模块名称 主要功能
Spring-core 依赖注入IOC和DI的基本实现
Spring-beans Bean工厂与Bean的装配
Spring-context 定义基础的Spring的Context上下文即IOC容器
Spring-context-support 对Spring IOC容器的扩展支持,以及IOC的子容器
Spring-context-indexer Spring的类管理组件和Classpath扫描
Spring-expression Spring表达式语言

Spring 切面编程相关

模块名称 主要功能
Spring-Aop 面向切面编程模块
Spring-Aspecrts 集成AspectJ
Spring-Instrument 动态的Class Loading模块

Spring数据访问集成

名称 主要功能
Spring-JDBC Spring提供的JDBC抽象框架主要实现 模块,用于简化JDBC操作
Spring-Tx Spring JDBC事务实现模块
Spring-ORM 主要集成Hibernate,Java Persistence API(JPA)和Java Data Objects JDO
Spring-OXM 将java对象映射成XML数据,或者将XML数据映射成java对
Spring-JMS Java Messaging Service.能够发送和接收信息

Spring Web相关的组件

名称 主要功能
Spring-Web spring-web提供了最基础Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IOC容器
Spring-WebMVC 实现了Spring MVC(model-view-Controller)的Web应用
Spring-WebSocket 主要是与Web前端的全双工通讯的协议
Spring-WebFlux 一个新的非堵塞函数式Reactive Web框架,可以用来建立异步的,非阻塞,事件驱动的服务

Spring通信报文相关

模块名称 主要功能
Spring——Messaging 主要职责是为Spring框架集成一些基础的报文传输应用

Spring测试相关

名称 主要功能
Spring-test 主要为程序测试提供

Spring集成兼容

名称 主要功能
Spring-Framework-BOM BOM of Materials解决Spring的不同模块的依赖版本问题

实现基本功能Spring的思路

  1. 配置阶段

    • 配置Web.xml DisppatcherServler
    • 设定init-param contextConfigLoacation=classpath:application.xml
    • 设定url-pattern /*
    • 配置Annotation @Controller @Service @Auotwirted @RequestMapper
  2. 初始化阶段

    • 调用init方法 加载配置文件
    • IOC容器初始化 Map<String,Object>
    • 扫描相关的类 scan-package=‘你的包’
    • 创建实例并保存到容器 通过反射机制将类实例化放到IOC容器

    IOC


    • 进行DI操作 扫描IOC容器的实例,给没有复制的属性自动复制

    DI


    • 初始化HandMapping 将URL和一个Method一对一映射关联

    MVC


  3. 运行阶段

    • 调用doPost()方法/doGet()方法 Web容器调用doPost/doGet,获得request/response
    • 匹配HandMappingrequest对象中获得用户输入的url,找到其对应的Method
    • 反射调用method.invoker() 利用反射调用方法并返回结果
    • respone.getWrite().write 将结果输出到浏览器

说明

本文章为作者读书笔记及感悟,其中参考了《spring5核心原理与30个类手写实战》以及互联网上的内容。如有错误,请评论或者私聊我,欢迎探讨技术问题 。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消