【Spring boot实践】Spring boot下的Spring MVC

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/R_s_x/article/details/89194640

Spring MVC的几种注解

Controller注解

@Controller注解是在Spring的org.springframework.stereotype包下,Controller注解类型用于只是Spring类的实例是一个控制器,使用@Controller注解的类不需要继承特定的父类或者实现特定的接口,相对之前的版本实现用Controller接口变得更加简单。而Controller接口的实现类只能处理一个单一的请求动作,而@Controller注解注解的控制器可以同时支持处理多个请求动作,使程序开发变得更加灵活。

@Controller用户标记一个类,使用它标记的类就是一个Spring MVC Controller对象,即:一个控制器类。Spring使用扫描机制查找应用程序中所有基于注解的控制器类,分发处理器会扫描使用了该注解的方法,并监测该方法是否使用了@RequestMapping注解,而是用@RequestMapping注解的方法才是真正处理请求的处理器。

RequestMapping注解

Spring MVC中用于参数绑定的注解有很多,都在org.springframework.web.bind.annotaion包中,根据他们处理的request的不同内容可以分为四类(常用的类型)
第一类:处理request body部分注解:@RequestParam和@RequestBody
第二类:处理request URL部分注解:@PathVariable
第三类:处理request header部分注解:@RequestHeader和@CookieValue
第四类:处理attribute类型的注解:@SessionAttribute和ModelAttribute

@RequestMapping注解在上面提到是用来处理雷和方法发送请求动作,@RequestMapping注解也在org.springframework.web.bind.annotation包中,但是严格来说,他并不属于参数绑定的注解。因此,@RequestMapping可以用来注释一个控制器类,在这种情况下,所有的方法都将映射为相对于类级别的请求,表示该控制器处理的所有请求都映射到value属性所指示的路径下。

@ResponseBody注解

该注解用于将Controller的方法返回的对象,通过适当的HTTPMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:返回的数据不是Html标签的页面,而是其他某种格式的数据时(如json,xml等)使用;

Spring boot下的Spring MVC

在Spring boot下Spring MVC的注解使用时完全一样的,上面简单介绍了三种Spring MVC的注解,还有很多其他的就不做介绍了,对于上面三种注解在Spring boot中有了一些新的组合做一个简单的介绍。

RestController注解

RestController注解是Spring4之后新增的注解,是@Controller和@ResponseBody的组合注解,用于返回字符串或者json数据。使用此注解时代替原@Controller注解即可。

原格式:

@Controller
public class MVCController {

    @RequestMapping("/boot/getUser")
    public @ResponseBody Object getUser(){
        User user = new User();
        user.setId(100);
        user.setName("张三丰");
        return user;
    }
}

使用@RestController替换@Controller和@ResponseBody:

@RestController
public class MVCController {

    @RequestMapping("/boot/getUser")
    public Object getUser(){
        User user = new User();
        user.setId(100);
        user.setName("张三丰");
        return user;
    }
}

结果如下图。得到一串json数据,这里也体现出了RequestMapping的效果。
在这里插入图片描述

GetMapping注解

@GerMapping是RequestMapping和Get请求方法的组合。
以@GetMapping为例。
Spring MVC中用法:

    @RequestMapping(value = "/boot/getUser",method = RequestMethod.GET)
    public Object getUser1(){
        User user = new User();
        user.setId(100);
        user.setName("张三丰");
        return user;
    }

使用@GetMapping效果:

    @GetMapping( "/boot/getUser")
    public Object getUser2(){
        User user = new User();
        user.setId(100);
        user.setName("张三丰");
        return user;
    }

这个理解起来很简单了,只能用于get请求方法,同理@PostMapping、@PutMapping、@DeleteMapping适用于post、put、delete请求的方法。

猜你喜欢

转载自blog.csdn.net/R_s_x/article/details/89194640
今日推荐