Spring
实现简易版的 Spring,了解其原理,从而更好的使用它。
参考项目:
-
mini-spring
-
手写 IoC、AOP 模块。
-
-
SmartMvc
-
手写 MVC 模块。
-
简单讲解Spring
参考链接
Spring常见面试题总结 JavaGuide(提取了些自己认为的重点)
Spring框架简介(两张图的来源)
概念解释
Spring 的核心在于 IoC、AOP、MVC。
- IoC:Spring 以“依赖注入”的方式实现了“控制反转”的效果,以符合软件工程中的“依赖倒置”原则。
- AOP:面向切面编程,通过动态代理将横切逻辑(如日志)与业务代码解耦,实现统一管控。
- MVC:模型-视图-控制器架构模式。
- Model:系统涉及的数据。
- 普通 Bean。
- Dao:与数据库表映射的 Java Bean。
- View:前端页面展示。(前后端分离开发模式下无需考虑。)
- Controller:控制数据的传输。
- 前端接口 <-> 业务逻辑 <-> 数据库。
- Model:系统涉及的数据。
Spring 框架概述(4.0.x 版本)
Core Container 是 Spring 框架的基础模块,主要提供 IoC 依赖注入功能的支持。
- Spring 的其他功能都需要依赖于该模块。
AOP 提供面向切面的编程实现。
Web 中的 Servlet 提供了对 Spring MVC 的实现。
典型的完整 Spring Web 应用程序
图中可见,Spring 运行在一个 Servlet 容器中,如 Tomcat。
Custom domain logic 为开发者编写的业务逻辑。
WebApplication Context 为业务逻辑的应用上下文,管理 Bean 的生命周期。
JVM 字节码增强 && Java Agent
简单介绍
- Java Agent,似乎是用来做 JVM 监控的,比如 Arthas。
- 字节码操作库,在字节码运行时动态生成/修改类,具体就是三个字节码框架(ASM、Byte Buddy、Javassist),比如基于 ASM 的 CGLIB 动态代理。
相关链接
- 字节码增强技术探索 美团技术团队(比较详细。)
- Java字节码增强技术(简明扼要地介绍了各个字节码增强技术。)
- 字节码增强技术介绍(里面提到了 JVM 中字节码的生命周期。其实自己更想从 JVM 字节码生命周期的角度来学习各种字节码增强技术,就像 Spring Bean 的生命周期中的各个拓展点一样。)
- 字节码编程(详细讲了三个字节码框架与 JavaAgent 的使用。)