AppFuse 是一個開源專案骨架,整合了 Java 平台上最優秀的開源框架,幫助團隊快速啟動 Web 應用開發。它不僅生成目錄結構、依賴庫、建構腳本,更內建認證授權、使用者管理、Remember Me、SSL 切換、檔案上傳、皮膚佈局等「開箱即用」功能,讓開發者專注於業務邏輯而非框架整合。
AppFuse 將測試貫穿各層:
AbstractTransactionalDataSourceSpringContextTests 自動事務回滾,測試不污染資料。spring-mock.jar 模擬 Servlet API,測試 Action/Controller/Managed Bean。AppFuse 精選並預先整合:
| 類別 | 框架/庫 |
|---|---|
| 建構/報表/代碼生成 | Ant, Ant-Contrib, Checkstyle, EMMA, Java2Html, PMD |
| 測試 | DbUnit, Dumbster, jMock, JUnit, Canoo WebTest |
| 資料庫驅動 | MySQL, PostgreSQL |
| 持久層 | Hibernate, iBATIS |
| IoC | Spring |
| Web 框架 | JSF, Spring MVC, Struts, Tapestry, WebWork |
| Web 服務 | XFire |
| Web 工具 | Clickstream, DisplayTag, DWR, JSTL, SiteMesh, URLRewriteFilter |
| 安全 | Acegi Security (現 Spring Security) |
| 前端 | Prototype, Scriptaculous, Mike Stenhouse CSS Framework |
所有版本號集中在 lib.properties,升級只需替換 JAR 並調整屬性,如 ant test-all -Dspring.version=2.0。
Ant 是一等公民:編譯、測試、部署、代碼生成一條龍。同時支援 Eclipse/IDEA 內建 JUnit 跑測試。AppFuse 2.0 將遷移至 Maven 2 + JDK 5,利用 pom.xml 自動生成 IDE 專案檔,徹底解決 XDoclet 導致的 IDE 感知問題。
早期自行實現安全功能(Remember Me、密碼提示、SSL 切換等)代碼龐雜。引入 Acegi Security 後,以 175 行 XML 替換大量 Java 代碼,獲得:
基於 Ant + XDoclet + Middlegen/Hibernate Tools:
ant install-detailed 生成專屬 DAO/Manager;ant install 復用通用 DAO範例:建立 cat 表 → 執行 ant install-detailed → 修改 Hibernate 映射 → ant setup deploy 即可 CRUD。
2003 年 SourceForge 起家,2004 年遷至 java.net 成為熱門專案。多位提交者(Nathan Anderson, Ben Gill, David Carter 等)持續貢獻。郵件列表秉持「無愚蠢問題」原則,社群知識庫深厚。正如 Bruce Snyder 所言:「為代碼而來,為人們而留下」。
appfuse-hibernate-2.0.jar, appfuse-jsf-2.0.jar 等AppFuse 讓團隊站在 Java Web 開發技術前沿,以最小成本獲得測試、整合、自動化、安全、代碼生成、文檔與社群的完整支援。無論是否採用,其樣板代碼與最佳實踐都極具參考價值。