velocity源码分析:上下文承载类
老规矩,线上类图
由于这个代码结构比较简单,因此不做介绍,具体代码的缝合点在具体功能点中介绍(涉及到ast)。
记住几个点即可:
1.VelocityContexty可作为所有上下文承载点,因为其实现了三个接口:Context,InternalEventContext,InternalHousekeepingContext
2.InternalContextBase是个实现类,该类实现了InternalEventContext,InternalHousekeepingContext,是非用户数据上下文的实现
3.InternalContextAdapter是内部代码调用点,他适配了所有容器,可以拿到全部容器上下文;VelocityContext在代码编写中用的比较多,主要用来设置用户上下文;
4.AbstraceContext并非继承InternalContextBase,只是需要其实现而已
5.上下文是所有数据的保存点,包含模板变量,velocity配置,指令配置;