如何设置@RequestMapping的默认值?

mem*_*und 2 java spring spring-mvc

我使用@RestControllerwith@RequestMapping注释来定义我的所有 servlet spring-mvc

问题:如何为这些注释定义一些默认值,这样我就不必重复有关 例如consumes和的相同配置produces

我想始终应用以下配置,而不必在每个路径上重复它:

@GetMapping(produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE})

@PostMapping(
consumes = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE},
produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE})
Run Code Online (Sandbox Code Playgroud)

mem*_*und 5

也许最简单的方法就是创建一个自定义@RestController注释并在类级别上使用它。然后我只需要重复@PostMapping(consumes...)映射:

@Target(ElementType.TYPE)
@Retention(value=RUNTIME)
@RestController
@RequestMapping(produces = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE})
public @interface DefaultRestController {

}
Run Code Online (Sandbox Code Playgroud)

用法如下:

@DefaultRestController
public class MyServlet {
         @GetMapping("/getmap") //inherits the 'produces' mapping
         public void getmap() {
         }

         @PostMapping("/postmap", consumes = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE})
         public void postmap() {
         }
}
Run Code Online (Sandbox Code Playgroud)

有总比没有好。