SprintMVC 如何开启注解处理器和适配器?
参考回答
在Spring MVC中,开启注解处理器和适配器通常需要进行以下两步配置:
- 开启注解驱动的控制器:通过
@EnableWebMvc注解或<mvc:annotation-driven/>标签来启用Spring MVC的注解处理器。 - 配置DispatcherServlet:在
web.xml中配置DispatcherServlet,并在Spring配置文件中启用注解处理器。
1. 通过Java配置方式(推荐方式)
在Spring配置类中使用@EnableWebMvc来开启Spring MVC的注解支持。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig implements WebMvcConfigurer {
// 其他配置
}
2. 通过XML配置方式
在spring-servlet.xml中使用<mvc:annotation-driven/>来启用注解驱动。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
<mvc:annotation-driven />
<component-scan base-package="com.example.controller" />
</beans>
详细讲解与拓展
1. @EnableWebMvc 注解
- 作用:
@EnableWebMvc注解是Spring 4及以上版本中提供的,用来启用Spring MVC的注解驱动功能。它会自动配置Spring MVC的核心组件,如RequestMappingHandlerMapping、RequestMappingHandlerAdapter等,并且开启了基于注解的控制器扫描。 - 示例:
@Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { // 配置视图解析器、静态资源、消息转换器等 }
2. @ComponentScan 注解
- 作用:
@ComponentScan用于扫描指定包中的所有Spring管理的组件,并注册到Spring容器中。通常与@EnableWebMvc结合使用,以扫描控制器类。 - 示例:
@ComponentScan(basePackages = "com.example.controller") public class WebConfig { // 配置Spring MVC }
3. DispatcherServlet配置
在web.xml中配置DispatcherServlet,它是Spring MVC请求分发的核心组件。
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
4. @RequestMapping 注解的自动映射
通过@EnableWebMvc或<mvc:annotation-driven/>,Spring会自动启用@RequestMapping注解和其他相关注解(如@GetMapping、@PostMapping等)来处理请求映射。例如:
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "helloView";
}
}
5. 配置HandlerMapping和HandlerAdapter
Spring MVC的@EnableWebMvc注解或<mvc:annotation-driven/>会自动配置HandlerMapping和HandlerAdapter。
HandlerMapping:负责将请求映射到合适的处理器方法。@RequestMapping就是通过HandlerMapping来映射请求的。HandlerAdapter:负责处理请求并返回处理结果,通常是视图名。
总结
开启Spring MVC的注解处理器和适配器,主要通过@EnableWebMvc注解或<mvc:annotation-driven/>标签来实现,这样Spring MVC会自动配置相关的注解处理器和适配器,并启用控制器注解的支持。同时,还需要在web.xml中配置DispatcherServlet来处理请求。这些配置让Spring MVC更简洁和灵活,帮助开发者专注于业务逻辑的编写。