从6月4日就开始计划实现scoffold功能,知道现在才完成第一版, 加上代码自动生成基本上就可以快速实现一些原型了。

之所以用了这么长时间主要是遇到了好多难点,加上有时候晚上心里烦躁就没动手。 好歹坚持下来了,终成正果。

我遇到的第一个技术点是 class在运行时动态增强, 主要就是为controller动态添加上crud方法。

我采用了 asm,asm我是没有接触过,选择的理由是: asm性能高,对class code的要求为中,只需要大致了解class结构和命令即可。

1,我从官网下载了asm的文档开始看,没找中文的。

2,对class的整体结构还是挺简单的,但是具体的method中的命令有点复杂了,E文没看明白,一度陷入僵局,后来发现了一个神器 asmifier 类, asm自带的一个工具类,可以将指定的class 翻译为 asm编码,正好满足我的要求。

3, asm完成之后,遇到了classloader的问题,表现为 junit 测试正常,在webapp下出问题. 在兽兽提醒下,我对classloader的一些疑问做了一些测试,然后这个问题就解决了

4,freemarker 的templateloader, 我需要对template进行二次解析,我采用了自定义temploader的方式,当时不能上网直接反编freemarker参考 其他templateloader做的,还对freemarker的工作流程有了一定的了解


感悟:

     1,学习新知识时尽量从官网的教程开始看,至少要完整的看一遍,对技术的整体有个了解,然后做了一些例子,有工具类的尽量多注意工具类

     2, 对代码要进行 junit测试完成后,在系统测试

     3,系统上有问题,junit没问题,先看log,然后完善junit,比较环境的差异,针对性测试。

     4,尽量多看源码,从源码中去学习这个框架该如何入手