源码阅读与定制化
SpringFramework
,Acegi(SpringSecurity)
,Tomcat
,SpringBoot
,SpringCloud(部分)
, Jetty
,Velocity
,MyBatis/Generator
,Quercus(PHP in Java)
,Guava
,Android(UI部分)
源码阅读的目的
- 分析与解决 BUG(Quercus)
- 寻找隐藏的交互方式(Spring)
- 弥补文档的不完善性(非著名项目)
- 扩展与定制(Velocity,MyBatis/Generator等)
- 安全性检查(Quercus)
- 学习(Spring, Tomcat, Android-UI)
- 工作需要(Dubbo3维护)
源码阅读的方式
- 确定目标对象(建立自信 OR 被打击自信)
- 从使用开始
- 分析主脉络
- 分步调试
- 从抽象到具体
- 从易到难(Jetty -> Tomcat)
定制化
-
Ali-Tomcat
对 Tomcat 的增强,比如对于ClasaLoader并行加载的补丁
ClassLoader.registerAsParallelCapable
,并合入Tomcat7.0.65。另外就是对于HSF(High-Speed Service Framework)的支持。 -
Ali-JVM
-
PHP Support in Java
-
更全面的代码生成器
-
SpringBoot之兼容Velocity
-
权限平台的Boot化
收获
Tomcat -> 容器组件构架模型,生命周期管理与事件处理模型,以及 Pipeline 模型
Quercus, Binlog -> 协议的理解与实现
Android -> 分而治之与事件管理
Spring全家桶 -> 几乎囊括了所有的设计模式和架构模型
Tomcat 生命周期管理
start()
-----------------------------
| |
| init() |
NEW -»-- INITIALIZING |
| | | | ------------------«-----------------------
| | |auto | | |
| | \|/ start() \|/ \|/ auto auto stop() |
| | INITIALIZED --»-- STARTING_PREP --»- STARTING --»- STARTED --»--- |
| | | | |
| |destroy()| | |
| --»-----«-- ------------------------«-------------------------------- ^
| | | |
| | \|/ auto auto start() |
| | STOPPING_PREP ----»---- STOPPING ------»----- STOPPED -----»-----
| \|/ ^ | ^
| | stop() | | |
| | -------------------------- | |
| | | | |
| | | destroy() destroy() | |
| | FAILED ----»------ DESTROYING ---«----------------- |
| | ^ | |
| | destroy() | |auto |
| --------»----------------- \|/ |
| DESTROYED |
| |
| stop() |
----»-----------------------------»------------------------------
网友评论