SprintMVC 如何开启注解处理器和适配器?

参考回答

在Spring MVC中,开启注解处理器和适配器通常需要进行以下两步配置:

  1. 开启注解驱动的控制器:通过@EnableWebMvc注解或<mvc:annotation-driven/>标签来启用Spring MVC的注解处理器。
  2. 配置DispatcherServlet:在web.xml中配置DispatcherServlet,并在Spring配置文件中启用注解处理器。

1. 通过Java配置方式(推荐方式)

在Spring配置类中使用@EnableWebMvc来开启Spring MVC的注解支持。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig implements WebMvcConfigurer {
    // 其他配置
}
Java

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>
XML

详细讲解与拓展

1. @EnableWebMvc 注解

  • 作用@EnableWebMvc注解是Spring 4及以上版本中提供的,用来启用Spring MVC的注解驱动功能。它会自动配置Spring MVC的核心组件,如RequestMappingHandlerMappingRequestMappingHandlerAdapter等,并且开启了基于注解的控制器扫描。
  • 示例
    @Configuration
    @EnableWebMvc
    public class WebConfig implements WebMvcConfigurer {
      // 配置视图解析器、静态资源、消息转换器等
    }
    
    Java

2. @ComponentScan 注解

  • 作用@ComponentScan用于扫描指定包中的所有Spring管理的组件,并注册到Spring容器中。通常与@EnableWebMvc结合使用,以扫描控制器类。
  • 示例
    @ComponentScan(basePackages = "com.example.controller")
    public class WebConfig {
      // 配置Spring MVC
    }
    
    Java

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>
XML

4. @RequestMapping 注解的自动映射

通过@EnableWebMvc<mvc:annotation-driven/>,Spring会自动启用@RequestMapping注解和其他相关注解(如@GetMapping@PostMapping等)来处理请求映射。例如:

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "helloView";
    }
}
Java

5. 配置HandlerMapping和HandlerAdapter

Spring MVC的@EnableWebMvc注解或<mvc:annotation-driven/>会自动配置HandlerMappingHandlerAdapter

  • HandlerMapping:负责将请求映射到合适的处理器方法。@RequestMapping就是通过HandlerMapping来映射请求的。
  • HandlerAdapter:负责处理请求并返回处理结果,通常是视图名。

总结

开启Spring MVC的注解处理器和适配器,主要通过@EnableWebMvc注解或<mvc:annotation-driven/>标签来实现,这样Spring MVC会自动配置相关的注解处理器和适配器,并启用控制器注解的支持。同时,还需要在web.xml中配置DispatcherServlet来处理请求。这些配置让Spring MVC更简洁和灵活,帮助开发者专注于业务逻辑的编写。

发表评论

后才能评论