1 释名
app代表application,fuse意思是“融合”。(引自http://wl1985.javaeye.com/blog/149259)
2 用它能做什么
AppFuse 提供了很多应用程序需要的一些特性,包括:
3 作者
Matt Raible,当今开源世界一个比较活跃的开发者,他是AppFuse、Struts Menu的作者,也是XDoclet、DisplayTag等一些著名开源项目的积极参与者,《Hibernate In Action》的作者就在感谢的名单里面提到他,XDoclet的下载版本中所带的Hibernate标签部分的例子就是他写的,他还是2004年Apache技术年会的主讲人之一。
4 架构
这个层面中,appfuse首先提供了一个功能非常抽象的interface DAO,试图覆盖普通的CRUD操作,提供的方法都是针对Object进行操作,伴随这个interface,还提供了一个hibernate版本的i实现类BaseDAOHibernate。
这个层面需要解决的重头问题是事务,可以担当这个层面重任的技术有很多,如ejb中的session bean,但appfuse选择了springframework。appfuse在这个层面同样提供了巨抽象的一个interface,Manager,伴随这个interface,还提供了一个具体的实现类 BaseManager。
这个层面appfuse集成了几种当前常用的framework,struts是appfuse的首选,appfuse提供了一个BaseAction,其中提供了一些便利的方法,如从spring的applicationContext中根据XXXManager的name拿到XXXManager,从session拿到当前的user信息,以及对errrorMessage的处理,需要提及的是里面的execute方法,根据request中的method这个parameter去将request dispatch到相应的handler,具体细节可参考struts中的LookupDispatchAction(这个class好象是从struts-1.1后才有的)。
这个层面还提供了一个BaseForm作为一个Base FormBean,提供了一些较高抽象层次的便利方法,如equals和基本的validation。
这个层面appfuse还提供两个业务相关的jsp templet,一个是业务对象form page,一个是业务对象list page。
业务对象form是针对一个业务对象,完成新建,修改,删除等操作。这个page中涉及到的技术主要有jstl和struts的form taglib,这两中技术这里就不多讲了,需要提及的是appfuse提供的一个label tag,这个tag能够根据我们在validation中对formbean的validation配置,决定是否显示*号(表示必须填写)。业务对象list是针对一批业务对象,完成排序等操作。这个page中涉及到的技术主要有display tag,一个很不错的taglib。
appfuse考虑到jsp页面的表现和内容分开,引入了一个sitemesh作为整个页面表现的框架,这是一个open source的framework,主要的使用方法是定义一个decorator page,然后配上一个filter去decorator我们的
业务页面。
appfuse在jsp这个层面还引入了struts-menu,这是一个不错的开源的taglib,用来处理menu的,appfuse使用struts-menu的方式是通过静态的xml的配置,我们可能要更灵活一点(也许是根据user的权限动态的取menu list,关于user manager和权限,后面会提及到)。
appfuse还提供了对error和message的集中处理。
5 如何应用AppFuse开发业务
appfuse给我们提供了一个完整的架构,我们只需要向这个架构中填料就可以了,下面大概阐述如何利用appfuse进行实际的业务开发。如appfuse的作者在wiki中推荐的那样,我们可以按照从后向前的顺序进行开发:
- 分析业务模型,建立model
- 建立dao
- 建立manage
- 开发action和page
appfuse中提供了appgen代码生成工具,用来根据appfuse设定好的templet code,利用xdoclet自动生成各个层面的代码,足显了xdoclet的强大和无处不在。
(以上是根据网上搜集的文章拼接而成)