原理區別
一直不清楚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這個子上下文來管理所有內容好了。
