Fenriswolf 程式筆記

奮利斯狼的地盤,小綿羊勿入

spring xml 的分類概念

在設定 spring beans 時可以分成多個 xml 檔案
除了以不同模組分類之外,還需要考慮依不同執行環境來定義
例如以 unit test 執行或 deploy 到 web server 上執行
call local 或 remote services(如 rmi、ejb 或 web services) 等等……….

以 acegi+struts+spring+hibernate 為例,我會把 xml 分成以下幾個檔案

  • appContext_core.xml

包括 PropertyPlaceholderConfigurer、datasource、transaction manager、aop autoproxy……

  • appContext_test.xml

beans 的數量及名稱都跟 appContext_core.xml 一模一樣,只差在設定不同
例如讀取不同的 properties 檔、datasource 由 JNDI lookup 改成 dbcp 等等…….
這是為了執行 unit test 可切換不同環境

  • appContext_hibernate.xml

包括 SesionFactory 及 mapping xml 的定義,會這樣做主要是因為 mapping xml 數量很多且是所有 modules 共用,分開設定會比較清楚
另一個原因是這跟環境設定無關,不需要放在 appContext_core.xml 裡
如果不需要共用 mapping xml 可以放在各 module 的 xml 裡

  • appContext_moduleA.xml
  • appContext_moduleB.xml
  • appContext_moduleXXX.xml

這是程式的核心,包括各 module 所用到的 beans, DAOs、Services 及 quartz Schedule Jobs……

  • appContext_rmi_server.xml
  • appContext_web_service_server.xml

提供 RMI 或 web service 所需要的設定,例如用 RmiServiceExporter 或 XFireExporter 等…..

  • appContext_acegi.xml

acegi 所需的設定

  • appContext_struts.xml

struts actions 的定義

  • appContext_rmi_client.xml
  • appContext_ejb_client.xml
  • appContext_web_service_client.xml

client 端 call RMI、ejb或 web service 所需的設定,beans 的數量及名稱都跟 appContext_modelXXX.xml 一模一樣
方便切換使用 local call 或是 remote call
 
 
分了這麼多個檔案,那不同狀況下到底要包含哪些檔案???
可以考慮以下幾種架構
1. 所有的程式都在 web server 執行

要包含 appContext_core.xml、appContext_hibernate.xml、appContext_moduleXXX.xml、appContext_acegi.xml、appContext_struts.xml

2. 只執行 service unit test

要包含 appContext_test.xml、appContext_hibernate.xml、appContext_moduleXXX.xml

3. 分散式的環境,rmi server 及 web server 在不同台機器

  • rmi server 包含 appContext_core.xml、appContext_hibernate.xml、appContext_moduleXXX.xml、appContext_rmi_server.xml
  • web server 包含 appContext_acegi.xml、appContext_struts.xml、appContext_rmi_client.xml

要不要分這麼細是看專案大小而定
以小案子而言,可以把 appContext_core.xml、appContext_hibernate.xml、appContext_moduleXXX.xml 全部合併為一個檔
而 appContext_acegi.xml 及 appContext_struts.xml 合併為另一個檔
 
 
執行環境
JDK 1.6.0_03
spring 2.5
hibernate 3.2.5
acegi 1.0.5
struts 2.0.11

程式下載
appContext_core.xml
appContext_test.xml
appContext_hibernate.xml
appContext_module.xml
appContext_rmi_server.xml
appContext_rmi_client.xml
appContext_acegi.xml
appContext_struts.xml

廣告

2012/03/19 - Posted by | Java Framework |

仍無迴響。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s

%d 位部落客按了讚: