除了带注释的控制器类之外,为什么在spring MVC中使用servlet呢?

时间:2012-09-12 13:38:48

标签: java-ee servlets spring-mvc

背景

我是初学MVC的新手,但是我可以清楚地看到使用@Controller注释的类而不是HttpServlet的子类的好处。

问题

由于spring允许你有多个servlet-context文件,我假设有些人混合了带注释的控制器类和标准的HttpServlet。我的问题是你为什么要这样做?难道你不必经历将servlet连接到适当视图的麻烦,并且首先失去你选择Spring MVC的原因吗?

2 个答案:

答案 0 :(得分:2)

Spring的一个主要思想是使其不突兀 - 如果您决定在应用程序中使用Spring,则不应该强制重写所有代码。

从这个角度来看,在Spring应用程序中使用Servlet以外的DispatcherServlet可以很容易地证明:你可能Servlet包含遗留代码,或者实现了第三方库as Servlet s(Web服务,RPC,其他Web框架等)。您不希望一次重写这些遗留组件,但Spring允许您通过将应用程序的核心服务移动到根应用程序上下文来利用其在这些组件中的优势,以便您可以从Spring MVC控制器中使用它们来自其他Servlet s。

答案 1 :(得分:1)

Spring注释控制器与Spring DispatcherServlet一起使用。这是HttpServlet的Spring实现,它提供了documentation中描述的所有功能。

DispatcherServlet在web.xml中配置,并提供Spring配置的位置。这可以是一个或多个xml文件,或者一个或多个注释为@Configuration的类(来自Spring 3.1)。

此配置应包含元素(或@EnableWebMvc)。这将触发spring在应用程序启动时扫描@Controller类的类路径。