@RequestMapping与@GetMapping

本文探讨了Spring MVC中@RequestMapping和@GetMapping的使用。@RequestMapping在类级和方法级用于请求映射,而@GetMapping是更具体的HTTP GET请求映射。源码分析显示@GetMapping仅适用于方法级别。此外,文章还提到了其他HTTP请求方法的注解。

         以前版本的Srping使用 @RequestMapping注解方法,现在也可以使用 @GetMapping 这个具体化请求方法的映射了,应该说是更直接,更简化注解的使用。

一、@RequestMapping 注解可以在控制器类的级别和/或其中的方法的级别上使用。

        @RequestMapping 在类的级别上的注解会将一个特定请求或者请求模式映射到一个控制器之上。之后还可以另外添加方法级别的注解来进一步指定到处理方法的映射关系

       当然,使用@GetMapping 在方法上进一步做映射关系也正确。

看看@GetMapping的源码:


/**
 * Annotation for mapping HTTP {@code GET} requests onto specific handler
 * methods.
 *
 * <p>Specifically, {@code @GetMapping} is a <em>composed annotation</em> that
 * acts as a shortcut for {@code @RequestMapping(method = RequestMethod.GET)}.
 *
 * @author Sam Brannen
 * @since 4.3
 * @see PostMapping
 * @see PutMapping
 * @see DeleteMapping
 * @see PatchMapping
 * @see RequestMapping
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping {

...

}

因为注解了@Target(ElementType.METHOD)  ,GetMapping只能作用于方法的级别上。

@Target  说明了Annotation 所修饰的 对象范围:

Annotation可被用于packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。

在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

用于描述注解的使用范围,即:被描述的注解可以用在什么地方。

  取值(Element Type)有:
    1.CONSTRUCTOR:用于描述构造器
    2.FIELD:用于描述域
    3.LOCAL_VARIABLE:用于描述局部变量
    4.METHOD:用于描述方法
    5.PACKAGE:用于描述包
    6.PARAMETER:用于描述参数
    7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

二、通过指定HTTP 请求头方法来注解的还有: 

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

三、例子: 

@RestController
@JsonInclude
@RequestMapping("/api/v1.0/")
@Api(value = "SeasonController")
public class SeasonController {
    // 自动装配服务层接口类
    @Autowired
    private ISeasonService seasonService;
    // 传入数据持久层的对象数据模型定义,以这个模型查询数据。
    @ApiOperation(value = "findListToDropdown",notes="查找季节下拉列表数据。")
    @GetMapping("seasonOverview")
    public ResponseVO<SeasonDataVO> findListToDropdown(){
        ResponseVO<SeasonDataVO> objectResponseVO = new ResponseVO<>();
//        objectResponseVO.setCurrentSeason(season.findAll());
        objectResponseVO.setData(seasonService.findAll());
        objectResponseVO.setMessage("Success");
        objectResponseVO.setSuccess(true);
        objectResponseVO.setError("null");
        return objectResponseVO;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值