標籤:context ref com 容器 內容 定義 傳統 mvc load
內容摘自:springmvc與spring內容相關的關係
原理區別
一直不清楚springmvc-servlet.xml配置與spring.xml兩個設定檔出現的上下文關係。今天找到一上面的文章,倒是突然間清楚了。
具體來說,spring.xml上下文與springmvc-servlet.xml上下文是父子容器內容相關的關係,他們有以下關係特點:
- spring.xml定義的上下文是父上下文,不能調用子容器的上下文,也就是不能調用springmvc-servlet.xml;
- springmvc-servlet.xml定義的是子類上下問,可以調用父容器spring.xml的上下文內容;
相信看到這裡,如果看過java虛擬機器規範,應該可以想到它這種設計跟classloader的“雙親委派模型”很類似。
實際應用
知道原理區別後,實際在應用中,往往有兩種模式:
傳統型
所謂傳統型,就是action、service、dao三層架構,基於複雜業務的大公司開發模式。
對這種模式,一般spring上下文控制在service、dao兩層,事物完整性也是在service層控制;而springmvc-servlet控制action層。
這樣的結果導致以下調用關係:
- action可以調用service、dao;
- service、dao不能調用action;
- spring上下文容器的aop不能應用到action層,但是可以通過在springmvc-servlet.xml中定義來做到類似事情。
激進型
所謂激進型,就是為了速度快捷,不寫那麼多類,不採用傳統的action、service、dao三層模式,直接合一,對接私活等講求速度的工作可以考慮。
對激進型開發,就簡單使用springmvc-servlet.xml這個子上下文來管理所有內容好了。
springmvc上下文與springcontext內容相關的關係