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
属性(在代码中就是这样)。