Spring MVC之@Controller和@RestController注解
@Controller和@RestController都是在SpringMVC中使用,作用在类上,用于申明该类是一个SpringMVC Controller对象,即一个控制器Bean。
@Controller注解
Spring 使用扫描机制查找应用程序中所有基于注解的控制器类。分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用了 @RequestMapping 注解的方法才是真正处理请求的处理器。
在SpringMVC中声明控制器 Bean 时,只能使用**@Controller**。该注解组合了@Compoment元注解。
@RestController注解
该注解是一个组合注解,组合了@Controller和@ResponseBody,若开发的是只提供数据的控制器,可以使用此注解;若没有此注解,则需在代码中加上@Controller和@ResponseBody两个注解。
SpringMVC配置
为了保证 Spring 能找到控制器,需要做如下配置:
web.xml配置
- 配置
Spring MVC前端控制器DispatcherServlet; - 配置初始化时,加载
springmvc.xml文件; - 配置应用启动时就实例化前端控制器(可选)。
- 配置解析请求路径。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!--前端控制器 web项目: 入口配置文件web.xml
1、加载spring配置文件
2、加载Springmvc配置文件
-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- springmvc默认加载springmvc配置文件:
默认加载springmvc配置文件必须满足约定:
1. 文件名称:(servlet-name)-servlet.xml = springmvc-servlet.xml
2. 文件路径:必须在WEB-INF下面
-->
<!-- 自定义加载springmvc配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 解析以.do为后辍的请求 -->
<!-- <url-pattern>*.do</url-pattern> -->
<!-- 解析项目根目录下的所有请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc.xml文件配置
- 配置扫描
Controller包下所下的所有java文件。 - 配置视图解析器,设置前后缀。视图解析器会根据配置路径将逻辑视图解析出物理视图。
- 配置处理器映射器和处理器适配器(此两项配置可选),当没有配置时,Spring 会使用默认的处理器映射器和处理器适配器来处理请求。在实际开发基本上不用配置。
1 | <!-- 把Controller交给spring管理 --> |
Spring MVC之@Controller和@RestController注解
http://blog.gxitsky.com/2018/01/01/SpringMVC-33-controller-annotation/

