我首先想澄清一下,在堆栈溢出和其他论坛中有很多关于此的讨论。我已经阅读了这些并理解了背后的一些概念<mvc:annotation-driven />
。但我越读越困惑。在我读过<mvc:annotation-driven />
的一些回复中,它支持@ResponseBody
. 但由于我是初学者,我安装了 sping-mvc-showcase 应用程序,发现此注解大量使用,而没有使用<mvc:annotation-driven />
. 你能告诉我吗?
3 回答
如果您使用 Spring MVC 的 xml 配置,这就是您设置对使用 MVC 注释(和其他一些东西)的支持的方式。使用较新版本的 Spring MVC,您可以改为使用纯 Java 配置您的应用程序,您可以通过将注释添加@EnableWebMVC
到您的配置类来实现相同的目的。
@Configuration
@EnableWebMVC
public class MyConfig {
// rest of config
}
Spring MVC 或 Spring 的任何实现都可以通过两种方式配置 Xml 或基于 Java。简单地<mvc:annotation-driven>
在您的 Xml 配置文件中使用标记意味着您正在向 Spring 指定您将使用 Spring 必须在您的基于 Java 的程序中寻找的 Spring 注释,例如可以是任何东西 -
@Controller
public class index() {
...
}
当您的应用程序正在初始化并且 Spring 扫描您在配置中指定的基本包时,将在 Spring 的容器中注册为控制器。还有注释,例如
“@EnableWebMvc”
只需启用各种可以使用的类,这些类非常有用并且专门设计用于帮助使用 Spring 开发 MVC Web 应用程序。
不仅使您能够使用与 MVC 相关的注释。查看架构将显示您可以配置 HttpMessageConverters、HandlerMethodArgumentResolvers、HandlerMethodReturnValueHandlers、异步请求处理选项、FormattingConversionServices、JSR-303 Validator、ContentNegotiationManager、MessageCodesResolver 等。
如果您自己没有配置任何这些,它将为您提供默认值。
它只影响 Servlet MVC。