Skip to content

Spring

实现简易版的 Spring,了解其原理,从而更好的使用它。

参考项目:

简单讲解Spring

参考链接

Spring常见面试题总结 JavaGuide(提取了些自己认为的重点)

Spring框架简介(两张图的来源)

概念解释

Spring 的核心在于 IoC、AOP、MVC。

  • IoC:Spring 以“依赖注入”的方式实现了“控制反转”的效果,以符合软件工程中的“依赖倒置”原则。
  • AOP:面向切面编程,通过动态代理将横切逻辑(如日志)与业务代码解耦,实现统一管控。
  • MVC:模型-视图-控制器架构模式。
    • Model:系统涉及的数据。
      • 普通 Bean。
      • Dao:与数据库表映射的 Java Bean。
    • View:前端页面展示。(前后端分离开发模式下无需考虑。)
    • Controller:控制数据的传输。
      • 前端接口 <-> 业务逻辑 <-> 数据库。

Spring 框架概述(4.0.x 版本)

spring-framework概述

Core Container 是 Spring 框架的基础模块,主要提供 IoC 依赖注入功能的支持。

  • Spring 的其他功能都需要依赖于该模块。

AOP 提供面向切面的编程实现。

Web 中的 Servlet 提供了对 Spring MVC 的实现。

典型的完整 Spring Web 应用程序

典型的完整spring-web应用程序

图中可见,Spring 运行在一个 Servlet 容器中,如 Tomcat。

Custom domain logic 为开发者编写的业务逻辑。

WebApplication Context 为业务逻辑的应用上下文,管理 Bean 的生命周期。


JVM 字节码增强 && Java Agent

简单介绍

  • Java Agent,似乎是用来做 JVM 监控的,比如 Arthas。
  • 字节码操作库,在字节码运行时动态生成/修改类,具体就是三个字节码框架(ASM、Byte Buddy、Javassist),比如基于 ASM 的 CGLIB 动态代理。

相关链接