2008.11.14更新: 加入struts.i18n.reload和修改一天工作为8小时(不算加班,加班2小时一般不算工资),加入了对无法显示行号的传言的验证.
我们知道开发Java EE Web应用最大的弊病当属Redeploy时候无奈的等待. 这是对成本的最大浪费. 假设一个公司有100名开发人员, 每人每小时需要reload应用10次(实际上可能不止十次), 每次耗费10秒, 而每个程序员每小时的薪酬是50元, 那么我们可以计算一下多出的时间:
一小时的等待时间: 100 x 10 x 10 = 10000 秒
一天的等待时间: 10000 x 8 = 80000 秒 = 1333 分钟 = 22 小时
一天的额外成本是: 1111 元
22个工作日的成本: 2,4444 元 ==> 可以再招好几个新员工了!
1年的成本: 29,3333元
OK, 这些讨论仅限于理论上的.
要提高Struts 2开发效率, 最主要的是修改了Struts配置文件后不要重新载入应用就能生效, 这可以通过以下配置做到:
src/struts.properties
struts.devMode=true
struts.i18n.reload=true
struts.configuration.xml.reload=true
这两个选项, 可以保证提供额外的出错信息(帮助开发人员定位错误位置), 国际化资源文件和配置文件修改后可以被立即自动重新载入(注意也能载入include文件的修改), 这个特性是N多其他框架所没有的.
那么另一个常见的问题就是修改了类文件后需要重新载入应用才能生效, 这个问题可以通过JavaRebel来搞定, 下面是 MyEclipse 中的Tomcat配置:
这两招下来, 可以在新加入类以及Struts配置修改后, 完全无需重启或者重新发布即可立即测试! 在JAR包暴多的情况下, 可以让我们不再等待10到20秒了!
JavaRebel在加入父类时无法工作, 但是有人反映说JavaRebel无法正确显示Debug时的类行号, 也许那是老版本时候的事情了, 我个人认为这是谣传(以讹传讹吧), 因为我用了三个月了, 一直还没遇到过, 我用的是最新版. 所谓实践出真知, 各位看截图(除0的代码是新加入的一行):
当然了, 也许他们说的是Eclipse特有的Debug模式所产生的问题, 那个所谓的Debug模式启动服务器, 一不小心就给Suspend到Tomcat的某个类中了, 点N次Resume才能见到结果,, 所以我一般不用. 按照我的理解输出内容等等, 查看错误行号等都是调试.
当然,欢迎各位提供无法正确显示行号时的截图. JavaRebel我弄到了一个个人免费的许可, 真的是很好用啊.