AppFuse 是 Matt Raible 建立的開源專案骨架,整合 Spring、Hibernate、Tapestry/Struts/JSF、Acegi (Spring Security)、XDoclet 等主流框架,透過 Ant 腳本自動化:專案建立、資料庫建構、代碼生成 (DAO/Service/Controller/View/測試)、打包部署。特色:「開箱即用」用戶管理、郵件、檔案上傳、國際化、主題切換、快取、日誌等企業級功能。
JAVA_HOME、PATHCATALINA_HOMEANT_HOME、PATH、複製 junit.jar 至 %ANT_HOME%/libcd c:\opt\appfuse
ant new
# 互動式輸入:專案名(myapp)、資料庫(mysql)、根包名(org.appfuse)
# 完成後專案位於 c:\opt\myapp (與 appfuse 同級)
c:\opt\myapp\build.properties:設定 database.admin.password (MySQL root 密碼)。c:\opt\myapp\metadata\sql\mysql-create.sql:修改建庫語句支援 UTF-8:create database if not exists @DB-NAME@ CHARACTER SET utf8 COLLATE utf8_general_ci;cd c:\opt\myapp
ant setup test-all
# setup: 建庫、建表、載入樣本資料、產生 DAO/Service、打包 WAR、部署 Tomcat
# test-all: 執行所有單元/整合測試
啟動 Tomcat,瀏覽 https://localhost:8080/myapp,預設帳號 mraible/tomcat (admin) 、tomcat/tomcat (user)。
CREATE TABLE `employee` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`code` varchar(10) NOT NULL,
`dept` varchar(50) NOT NULL,
`name` varchar(20) NOT NULL,
`status` varchar(10) NOT NULL,
`telephone` varchar(20) DEFAULT NULL,
`title` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
cd c:\opt\myapp\extras\appgen
ant install-detailed
# 互動式:
# 1) 從 table 產生 (table)
# 2) 表名: employee
# 3) 模組名: hr
編輯 src/dao/org/appfuse/dao/hibernate/applicationContext-hibernate.xml,在 mappingResources 加入:
<value>org/appfuse/hr/model/Employee.hbm.xml</value>
cd c:\opt\myapp
ant deploy
選單出現 Employee List,完成 CRUD 基礎功能。
| 需求 | 修改檔案 | 關鍵點 |
|---|---|---|
| 中文化介面 | web/WEB-INF/classes/ApplicationResources_zh_CN.properties | 編碼改 UTF-8,native2ascii 自動轉碼;按鈕 "done" → "完成" |
| 列表頁調整欄位/順序 | web/pages/hr/employees.html | 移除 id 欄,調整顯示順序 |
| 表單下拉選單 (部門/職稱/狀態) | employeeForm.html/.page, EmployeeForm.java | 使用 Tapestry PropertySelection + Resource Bundle 定義選項 |
| 新增「人事管理」角色權限 | metadata/sample-data.xml, security.xml, menu-config.xml, UserForm.java | 資料庫角色表、Acegi URL/方法攔截、選單 roles 屬性、下拉顯示中文 |
| 自訂主題 | web/styles/mytheme/ (複製 simplicity 修改 CSS 顏色), web.xml theme 參數 | 預設綠色調主題 |
ApplicationResources*.properties 統一管理,Tapestry/JSP 共用,Eclipse 設定檔案編碼 UTF-8。?theme=xxx 切換,自訂主題只需新增目錄修改 CSS。security.xml 定義 URL/方法級攔截,menu-config.xml 控制選單顯示,403.jsp 自訂拒絕頁。TransactionProxyFactoryBean 宣告式事務,txProxyTemplate 定義預設傳播屬性,Service 繼承覆寫。Log log = LogFactory.getLog(getClass())。MailSender + Velocity 模板,mail.properties 設定 SMTP。ehcache.xml 設定策略。build.xml 目標鏈:prepare → compile → jar → war → assemble-app → deploy。deploy 僅複製 EAR 至 WebSphere/Tomcat 部署目錄,支援熱部署。
AppFuse 以「慣例優於配置」+ 代碼生成,將 J2EE 專案啟動時間從數天壓縮至數小時。掌握 Ant 腳本、AppGen 模板、Spring/Acegi 整合點,即可在專案中快速交付高品質企業級應用。