已經轉移到
好·色之徒--我的博客、我的生活?
從配置文件說起
在WEB-INF/config下有多種配置文件,這里作個介紹,對項目的開發很有意義
主要涉及到了struts(struts-config文件夾下) 、spring(app-config文件夾下) 、struts和spring的結合處理(action-servlets-config文件夾下) 、 模版技術(tiles-config文件夾下) 、驗證技術(validation-config文件夾下)
到這里,或許會留意到沒有提及hibernate,有關hibernate的設置,也是通過spring來配置的,在后面的spring文件中會看到,有關hibernate.cfg.xml則存放在classpath下,需要用到的hibernate屬性配置信息hibernate.properties也存放在classpath下
這些配置信息是整個系統的裝配總線,通過這些xml的配置,把所有的資源串在了一起。
這里還要強調一個信息,這些配置文件都是按照功能模塊來劃分的,比如現在講解的這個系統中,除了默認的default外,還劃分了order(訂單處理系統)、admin(后臺管理系統),這樣設置的優勢在于很好的擴展系統,降低耦合性,同時條理也比較清晰,便于管理。
下面分別介紹一下各個主要的配置文件內容
1、struts(struts-config文件夾下)
struts-config文件夾下主要有struts-config-default.xml、struts-config-admin.xml、struts-config-order.xml三個配置文件
這里放置的是有關struts的配置信息,比如form-bean、action,有關form-bean的配置和一般的struts程序沒有什么兩樣,這里需要說明的是action的配置
這里舉例一個配置片斷:
type="org.springframework.web.struts.DelegatingActionProxy"
scope="request" validate="true" input="/WEB-INF/jsp/login.jsp">
注意里面的type屬性,這里設置的是org.springframework.web.struts.DelegatingActionProxy,正是通過它來使得和spring很好的結合起來,這里你會發現沒有具體的action類,它是通過struts和spring的結合處理(action-servlets-config文件夾下)的配置文件來實現的,這樣action類也納入到了spring容器的管理體系中去了。
struts和spring的結合就是這樣來實現的,當然除了這種方式以外還有其他的,可以參考:
關于struts中validate的幾種情況除了以上的配置信息外,還有幾個重要的配置,它是結合Spring、Tiles、Validator等框架的潤滑劑,主要是通過Struts的plug-in技術來實現的,舉例如下:
className="org.springframework.web.struts.ContextLoaderPlugIn">
value="/WEB-INF/config/action-servlets-config/action-servlets-default.xml
/WEB-INF/config/action-servlets-config/action-servlets-order.xml
/WEB-INF/config/action-servlets-config/action-servlets-admin.xml" />
通過Spring框架的ContextLoaderPlugIn,把action類交由Spring容器來管理
這里需要說明的一點是:是否需要在struts-config-default.xml文件中一起加載所有的action-servlets信息,還是對應著分別加載。當然現在的系統中是一起加載的,不過如果分開加載,也可以很好的分模塊開發,這邊只是探討,作個說明而已。
value="/WEB-INF/config/tiles-config/tiles-defs-default.xml" />
實現Tiles技術的嫁接
value="/WEB-INF/config/validation-config/validator-rules-default.xml,
/WEB-INF/config/validation-config/validation-default.xml" />
在Struts框架中采用Validator框架的驗證機制
2、spring(app-config文件夾下)
app-config文件夾下主要有applicationContext_default.xml、applicationContext_admin.xml、applicationContext_order.xml、applicationContext.xml、dataAccessContext-local.xml
這里主要是設置系統所需要的業務邏輯bean,完成符合spring-beans.dtd的定義規則
分別解釋一下各個配置文件的主要用途:
applicationContext.xml--定義一些共通的bean,列舉如下:
AbstractFacadeBean(com.iplan.portal.framework.base.BaseFacade--所有Facade的抽象類,主要完成對DAO的配置,以便為所有FACADE提供DAO支持)
AbstractServiceBean(com.iplan.portal.framework.base.BaseService--所有ServiceImp的抽象類,主要完成對DAO的配置,以便為所有ServiceImp提供DAO支持)
AppRelationCore(com.iplan.portal.framework.base.AppRelationCore--系統各模塊間關系的維護類,既所有模塊暴露的Facade通過此類來訪問,每添加一個Facade模塊,需要在這里追加)
baseTransactionProxy(通用的事務代理,這樣所有的Service、Facade都可以繼承這個事務代理)
這里定義的都是些基礎設施,可以看到都是framework.base下的類
dataAccessContext-local.xml--定義本地數據源信息
說明:為了系統運作的簡單化,這里設置了本地數據源信息(以local為標志),當然如果為了分布式運作,采用jta事務,可以定義相應的設置 這里主要定義了數據源dataSource、hibernate的SessionFactory(mySessionFactory)、hibernate的事務管理器
(myTransactionManager)、共通的訪問數據庫接口commonDAO(com.iplan.portal.framework.base.hibernate.CommonDAO)
以上兩個都是系統運作的基礎,其間有一些聯系,大家可以參照一下具體的配置文件即可
其它的三個配置文件都是按照功能模塊來劃分的,都是具體業務方面的信息,這里不在詳細描述,可以自行參考配置文件
3、struts和spring的結合處理(action-servlets-config文件夾下)
action-servlets-config文件夾下主要有action-servlets-default.xml、action-servlets-admin.xml、action-servlets-order.xml
這里是action在spring容器下的配置,舉例如下:
class="com.iplan.portal.start.action.LoginAction">
這里的name屬性"/loginAction"和相應的struts配置文件中的path屬性要一一對應起來,這樣action類的生命周期將交由spring容器來管理了
4、模版技術(tiles-config文件夾下)
5、驗證技術(validation-config文件夾下)
這兩項就不在多做闡述了,應該應用的比較多了
除了WEB-INF/config下的五大類配置文件外,對其他一些需要用到的配置信息作一個比較簡單的介紹
hibernate.cfg.xml:
設置pojo信息,相關的SessionFactory配置已經移植到了Spring的dataAccessContext-local.xml配置文件中去了
hibernate.properties
設置一些有關hibernate的屬性信息,比如:driver、url、username、password、dialect、Connection Pool等等
ApplicationResources.properties
i18n國際化資源信息
displaytag.properties
display標簽的配置信息
default-db.script、default-db.properties默認的hsqldb的數據結構、數據
log4j.properties日志配置文件
最后,還有一個非常重要的配置信息:web.xml
有關于各種信息的配置,web.xml里面有比較詳細的說明,這里就不在多闡述了
這里描述一下應用服務器啟動后,如何加載這些配置信息已供應用系統運作的
第一步,當然是讀取web.xml中的配置信息,可以啟動
Log4j信息
通過ContextLoaderListener、讀取contextConfigLocation信息(spring(app-config文件夾下)),加載springapp-config文件夾下的配置信息
HSQLDB數據庫
啟動struts的ActionServlet,相應的config被加載
第二步,從第一步可以看到struts(struts-config文件夾下)、spring(app-config文件夾下)都已經被加載
那么struts和spring的結合處理(action-servlets-config文件夾下)、模版技術(tiles-config文件夾下)、驗證技術(validation-config文件夾下)如何被加載呢?
struts和spring的結合處理(action-servlets-config文件夾下)通過struts(struts-config文件夾下)下的struts-config-default.xml加載 模版技術(tiles-config文件夾下)、驗證技術(validation-config文件夾下)分別通過struts(struts-config文件夾下)下的各個對應的功能模塊配置文件加載
通過以上兩步加載,把五個大的配置信息都加載到系統中去了
以上是關系系統配置文件的一些說明,希望通過這些能對整個系統的架構有一個比較清晰的了解
已經轉移到
好·色之徒--我的博客、我的生活