Appfuse是一個開源的J2EE開發框架,可以使用它對Spring、Hibernate、Struts、Tapestry、Ant、Xdoclet、Junit、Log4j等進行集成,以簡潔快速地構建項目開發框架。Appfuse是一個項目骨架,類似于通過向導創建新Web項目時IDE所創建的東西。Appfuse可以支持Hibernate或iBATIS作為持久性框架。對于Web框架來說,我們可以使用JSF(JavaServer Faces)、Spring MVC、Struts、Tapestry 或 WebWork。在開發應用時Appfuse與樓上3.0的代碼機有些類似,對于單表的增刪查改維護,可以用Ant直接生成對應的JSP和Java代碼,然后可以在此基礎上進行修改以實現自己的業務功能,方便了應用的開發。
下面一個關于員工信息管理的例子演示了如何使用Appfuse快速構建J2EE應用:
1、 搭建開發環境:
下載JDK、Tomcat、Eclipse、MySQL、Appfuse、Ant等,配置Path、JAVA_HOME、CATALINA_HOME、ANT_HOME等環境變量。
2、建立項目并創建數據庫
在Appfuse目錄下運行ant new新建項目,將項目導入Eclipse。在項目build.properties文件中配置數據庫連接,在\\metadata\sql\mysql-create.sql中配置數據庫創建語句。運行ant setup test-all。此命令中“setup”完成了很多“設置”工作:創建數據庫、構建dao和serive類、加載樣本數據、創建war文件并部署到Tomcat。“test-all”運行所有的測試用例:對dao、service、頁面的測試。啟動Tomcat訪問應用,會發現只運行了一次Ant腳本,但是系統已經擁有“用戶管理”、“郵件”、“文件上傳”等功能,這就是Appfuse開箱即用、快速開發的優勢。
3、創建employee表并使用appgen自動生成代碼
AppGen可以生成絕大部分我們需要的代碼,比如dao類,service類,菜單、增刪改的web 頁面、配置文件、樣本數據,等等。AppGen利用XDoclet生成代碼,因此可以在extras/appgen/src看到很多.xdt文件,這些就是XDoclet的模版定義文件。如果希望自己編寫dao和service類,就運行“install”這個target,否則就使用“install-detailed”。
在MySQL中創建運行install-detailed,并手工將Employee.hbm.xml添加到配置文件applicationContext-hibernate.xml中。運行ant deploy,打開頁面,員工維護功能已經添加到頁面中了。
4、根據項目需求調整代碼
語言國際化:在資源文件里定義國際化文字,Appfuse會在Ant腳本運行的時候根據本地區域和語言設置,自動用native2ascii進行編碼轉換。
頁面布局和樣式:Appfuse 使用CSS框架來定義頁面布局和樣式,文件存放在\\web\styles中,我們可以仿照樣例格式,在其中定義自己的主題文件。系統使用的主題由web\WEB-INF\web.xml中的“theme”參數指定。
系統安全:Appfuse使用Acegi進行安全管理。Acegi的配置信息位于\\web\WEB-INF\classes\security.xml。Acegi是被集成到Spring當中的,因此這個文件是Spring 的配置文件格式。在\\web\WEB-INF\web.xml中,該文件被指定在應用啟動前會被加載。
事務控制:Appfuse利用Spring進行事務管理。Spring可以以聲明的方式,對方法進行事務控制,并且可以根據實際的需要,調整控制粒度。“聲明方式”的好處在于:核心代碼只需要關注業務邏輯,而將事務控制完全交由配置文件管理,一方面是核心代碼簡潔清晰,另一方面也便于進行集中配置管理。Spring 提供了大量的參數和選項使開發者能夠靈活地管理事務。
日志:Appfuse集成了Log4j進行日志管理,log4j.properties位于\\web\WEB-INF\classes目錄下。Appfuse已經在絕大多數基類中加入了如下用于輸出日志的成員變量:
protected final Log log = LogFactory.getLog(getClass());
因此,開發者只需要在自己的代碼中調用log方法就可以了,例如:“log.debug("entered 'update' method");”。
