花了两天时间,实现了一个统计百合十大的网站。对百合BBS十大热门页面进行定期的抓取和正则分析,统计各个版面、各个ID的十大贴数,还可以查询某天十大标题。
这次关键在于终于实现了一个Guice+Wicket的项目,两者我都是期待已久。不过,从完成的情况来看都不太满意。由于项目的功能基本上分析独立的定时抓取和数据库查询两个模块,所以用Guice管理两个独立模块出现了一点小问题。如果程序完全是通过Wicket作为入口,可以直接用Wicket整合Guice的支持,但是现在另一块独立的部分则没有办法和系统整合。不得已必需手动维持一个Guice的Module,编写一部分binder代码,在适当的时候还要书写注入的代码。虽然功能实现了,但是有些注入的过程我到现在还是不太清楚。此外还要自己管理事务,因此我采用了一个全局的EntityManager,通过一个helper来手动控制事务的开启和提交,这一块总觉得有些不安心。我试过把EntityManager保存到ThreadLocal里,但是发现这个方法似乎不行。。。
再有就是wicket,如果界面功能简单,要呈现的数据、功能不复杂,用wicket确实非常方便。这种方式类似ASP.NET,封装了整个HTTP交互的过程,让开发者仿佛是在编写一个有状态的本地应用。对于熟悉HTTP的人来说没有什么问题,但是如果是初学者这种方式恐怕还是值得商榷(包括ASP.NET我觉得也值得商榷)。

