Spring MVC注释

介绍:

从Spring 2.5开始,我们可以使用注释来标记我们的Spring组件。

一种方法是在我们的appConfig.xml中使用<component-scan>标记:

<context:component-scan base-package="com.programmergirl" />

然后,Spring容器将递归扫描给定包及其子包中的所有组件。

在本快速教程中, 我们将讨论最常用的Spring MVC注释。

定义

根据其类型,我们可以为控制器使用两种不同的注释:

我们可以简单地使用此注释来标记我们的任何Spring MVC控制器类:

@Controller
public class MyController {
 
   ...
}

该注释对于注释我们的RESTful控制器很有用:

@RestController
public class MyRestController {
    ...
}

该注释本身使用@Controller@ResponseBody注释进行注释。

在另一篇文章中,我们已经详细介绍了@Controller@RestController之间区别

请求处理注释:

现在让我们看一下可用于处理HTTP请求的注释:

我们使用此批注在Spring MVC Controller中映射Web请求方法 。 我们还可以使用其可用属性对其进行自定义:

  • method:表示一种HTTP请求方法-PUT,GET,POST,DELETE,PATCH
  • 值:映射的URL
  • params根据HTTP参数过滤请求
  • headers根据HTTP标头过滤请求。
  • 产生:定义HTTP响应的媒体类型
  • 消耗:指定HTTP请求的媒体类型
@Controller
@RequestMapping("/hello-world")
class MyController {
 
    @RequestMapping(value = "/message", method = RequestMethod.GET)
    String message() {
        return "Hello World!";
    }
}

我们还可以在类级别使用此注释来设置一些公共属性

此外,从Spring 4.3开始,@ RequestMapping为不同的HTTP方法提供了多种变体。 这些包括@ GetMapping,@ PutMapping,@ PostMapping,@ DeleteMapping@PatchMatching。

有了这个注释,我们可以将HTTP请求参数绑定到method参数

@GetMapping("/message")
String message(@RequestParam("userName") String userName) {
    return "Hello " + userName;
}

(可选)我们还可以提供默认值。 对于request参数的缺失值,使用默认值:

@GetMapping("/message")
String message(@RequestParam(defaultValue = "Sam") String userName) {
    return "Hello " + userName;
}

我们可以将method参数绑定到path或URI中的变量之一。 我们将使用@PathVariable

@GetMapping("/message/{userName}")
String message(@PathVariable String userName) {
    ...
}

另外,我们可以通过将required设置为false来选择将路径变量标记为可选

@GetMapping("/message/{userName}")
String message(@PathVariable(required = false) String userName) {
    ...
}

可以将HTTP请求正文作为参数传递给控制器​​中的处理程序方法。 我们经常使用它来读取带有PUTPOST等 HTTP方法的请求的请求主体。

@PostMapping("/message")
String message(@RequestBody String userName) {
    ...
}

内容将根据其类型使用HttpMessageConverter自动反序列化。

响应处理注释:

现在,让我们探索一些可用于处理HTTP响应的注释:

@RequestBody相似,我们有一个@ResponseBody批注。 当我们使用此注释对方法进行注释时,Spring将此方法的结果视为响应本身:

@GetMapping("/message")
@ResponseBody
String message() {
    return "Hello World!!";
}

我们还可以使用此注释来注释@Controller类。 如果是这样,我们控制器中的所有方法都将使用它。

这样,我们可以将所需的HTTP响应状态映射到控制器中的方法:

@ExceptionHandler(UserAccessDeniedException.class)
@ResponseStatus(HttpStatus.FORBIDDEN)
void onUserAccessDeniedException(UserAccessDeniedException exception) {
    ...
}

我们可以了解更多有关如何使用@ResponseStatus设置状态代码和原因的信息。

我们可以编写自定义的异常处理程序方法。 在方法执行期间引发其类型异常时,将调用以下方法:

@ExceptionHandler(UserAccessDeniedException.class)
void onUserAccessDeniedException(UserAccessDeniedException exception) {
    // ...
}

结论:

在本教程中,我们浏览了大多数常用的Spring MVC注释。

翻译自: https://www.javacodegeeks.com/2019/05/spring-mvc-annotations.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值