Java 如何设置@RequestMapping的默认值?

Java 如何设置@RequestMapping的默认值?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在使用带有@RestController和@RequestMapping注释的@RestController来定义所有带有springmvc的servlet 问题:如何为这些注释定义一些默认值,这样我就不必重复相同的配置,例如消费和生产 我希望始终应用以下配置,而不必在每个路径上重复它: @GetMapping(produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE}) @PostMapping( consumes = {APPL

我正在使用带有
@RestController
@RequestMapping
注释的
@RestController
来定义所有带有
springmvc
的servlet

问题:如何为这些注释定义一些默认值,这样我就不必重复相同的配置,例如
消费
生产

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

@GetMapping(produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE})

@PostMapping(
consumes = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE},
produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE})

RequestMapping
注释的目标可以是方法或类。它可以用来代替只针对方法的
GetMapping
PostMapping
注释

具体来说,@GetMapping是一个组合注释,充当 @RequestMapping(method=RequestMethod.GET)的快捷方式

具体来说,@PostMapping是一个组合注释,充当 @RequestMapping(method=RequestMethod.POST)的快捷方式

假设您的控制器名称为
HelloController
,请在
Class
级别使用适当的方法添加
RequestMapping
注释,使其自动应用于所有路径

@Controller
@RequestMapping(method={RequestMethod.GET,RequestMethod.POST}, consumes = { MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE },produces = { MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_VALUE },)
class HelloController{
} 

可以通过在单个方法中对其进行注释来覆盖此配置。

注释的目标可以是方法或类。它可以用来代替只针对方法的
GetMapping
PostMapping
注释

具体来说,@GetMapping是一个组合注释,充当 @RequestMapping(method=RequestMethod.GET)的快捷方式

具体来说,@PostMapping是一个组合注释,充当 @RequestMapping(method=RequestMethod.POST)的快捷方式

假设您的控制器名称为
HelloController
,请在
Class
级别使用适当的方法添加
RequestMapping
注释,使其自动应用于所有路径

@Controller
@RequestMapping(method={RequestMethod.GET,RequestMethod.POST}, consumes = { MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE },produces = { MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_VALUE },)
class HelloController{
} 

可以通过在单个方法中对其进行注释来覆盖此配置。

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

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

}
用法如下:

@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() {
         }
}

总比什么都没有好。

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

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

}
用法如下:

@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() {
         }
}

总比没有强。

您可以在类上添加注释。以下是一个例子:

@RestController
@RequestMapping(
    consumes = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE},
    produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE}
)
public class MyClass {

    // after that you don't have to put any
    // @RequestMapping default values before methods

}

您可以在类上放置注释。以下是一个例子:

@RestController
@RequestMapping(
    consumes = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE},
    produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE}
)
public class MyClass {

    // after that you don't have to put any
    // @RequestMapping default values before methods

}

我已经很长时间没有做spring mvc了,但是你不能自己写注释吗?不幸的是@GetMapping有
@Target(ElementType.METHOD)
,所以我不能创建自己的注释并重用它。我也不能将注释添加到servlet控制器的类级别。类级别不允许这样做…您可以在类级别上的RequestMapping上应用Products和consumes。我不想在
@RequestMapping(method=GET)
上设置
consumes
!仅在POST映射上。请检查此项。我已经很长时间没有使用spring mvc了,但您不能只编写自己的注释吗?不幸的是@GetMapping有
@Target(ElementType.METHOD)
,因此我无法创建自己的注释并重用它。我也不能将注释添加到servlet控制器的类级别。类级别不允许这样做…您可以在类级别上的RequestMapping上应用Products和consumes。我不想在
@RequestMapping(method=GET)
上设置
consumes
!仅在POST映射上。选中此选项,我不想在
GET
上设置
消费
!只有在邮寄的时候-我想这就是你所能做的。Rest必须在方法级注释中被重写。我不想在
GET
上设置
consumes
!只有在邮寄的时候-我想这就是你所能做的。Rest必须在方法级注释中被重写。同样,如前所述:我不(!)想在两个get+post上设置
consumes
属性(在代码中就是这样)。同样,如前所述:我不(!)想在两个get+post上设置
consumes
属性(在代码中就是这样)。