从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中了解更多信息。



