曾经有一段时间Alex不遗余力的(^_^)向我推荐Guice框架,我当时只用Spring做过一个练手项目,对Spring都还不是非常熟悉,正心急火燎,所以就暂时搁置下来了。而最近在寻找不同于Spring+Hibernate+Struts2的另一套轻量级方案,基本上锁定了Guice+OpenJPA+Wicket,我叫它J2EE Web Develop without XML。
已经用Guice和Wicket整合做了一个留言本的示例程序,Guice确实非常简单,全部Annotation标记。可以说Annotation之于XML配置文件的好处就是Guice之于SpringIoC的好处,当然从另一方面来说,Annotation之于XML配置文件的缺点Guice难免也都沾上了。不过,在绝大多数时间,我们接触的小规模的项目中,这个缺点几乎不是什么缺点。虽然我非常不能认同在接口上加上ImplementedBy这样的Annotation,但是绝大多数时候这么做也不会造成太大的问题(仅仅是缺少一点美感而已,接口怎么能知道谁实现了它),因为对于那些可能造成问题的情况,也许我们从一开始就不会使用Guice,而是用Spring甚至EJB3。
不过跟Spring一整套几乎涵盖了大半个Java世界的整合方案相比,Guice就显得单薄了一些。其它倒也无所谓,关键是Guice上的事务管理成了一个比较麻烦的问题,享受过Spring AOP带来的便利后,真要自己实现一个还真得费一番脑筋设计(话说,这个过程其实很有趣。我觉得这就是Java带给我的乐趣,而Grails、Django一类的框架上似乎很难感受到这种自己设计的乐趣了。个人观点,扯远了)。不过现在这似乎也不是问题,前两天我GoogleGroup上看到一个叫作Warp-persist的框架为Guice提供了这部分的支持,但是我还没有尝试,因为他的网站被GFW了。(有话说,据说整个Warp Framework是一套很赞的Java Web开发框架)
目前正在准备开始一个Guice+OpenJPA+Wicket的小型项目,由于没有容器、没有Guice的事务支持,JPA的EntityManager和Transaction都要自己管理,是个挑战啊。
最后,强烈向大伙推荐路遥的小说《人生》,我今天用了一天时间看完了,很有感触。

