您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Spring RequestMapping适用于产生和使用JSON的控制器

Spring RequestMapping适用于产生和使用JSON的控制器

从Spring 4.2.x开始,你可以创建自定义映射注释,并将其@RequestMapping用作元注释。所以:

有没有一种方法可以产生带有消费和生产认值的“复合/继承/聚合”注释,所以我可以这样写:

@JSONRequestMapping(value = "/foo", method = RequestMethod.POST)

是的,有这种方法。你可以创建如下的元注释:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@RequestMapping(consumes = "application/json", produces = "application/json")
public @interface JsonRequestMapping {
    @AliasFor(annotation = RequestMapping.class, attribute = "value")
    String[] value() default {};

    @AliasFor(annotation = RequestMapping.class, attribute = "method")
    RequestMethod[] method() default {};

    @AliasFor(annotation = RequestMapping.class, attribute = "params")
    String[] params() default {};

    @AliasFor(annotation = RequestMapping.class, attribute = "headers")
    String[] headers() default {};

    @AliasFor(annotation = RequestMapping.class, attribute = "consumes")
    String[] consumes() default {};

    @AliasFor(annotation = RequestMapping.class, attribute = "produces")
    String[] produces() default {};
}

然后,你可以使用认设置,甚至可以根据需要覆盖它们:

@JsonRequestMapping(method = POST)
public String defaultSettings() {
    return "Default settings";
}

@JsonRequestMapping(value = "/override", method = PUT, produces = "text/plain")
public String overrideSome(@RequestBody String json) {
    return json;
}

你可以AliasFor在spring的javadoc和github Wiki中了解更多信息。

Java 2022/1/1 18:17:34 有401人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶