内容摘自: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这个子上下文来管理所有内容好了。

05-11 13:50