Spring MVC中 @RequestMapping 注解中 Path 和 Variable 的区别

4

我想知道在Spring MVC的Controller类中,PathVariable有什么区别。

@RequestMapping("/home")
@RequestMapping(value = "/home")
@RequestMapping(path = "/home")

根据Spring文档Spring 5注解类型RequestMapping,路径是值的别名,而值是路径的别名。我想了解这3个RequestMapping定义及其区别。
3个回答

2

@RequestMapping(value = "/home", method = RequestMethod.GET)

这两种方式的写法没有差别,都是用来指定请求映射的路径为"/home"。但如果你想添加其他参数,就需要使用含有RequestMethod.GET参数的写法。

@GetMapping(value = "/home/{ABC}", consumes = MediaType.ALL_VALUE)

因为如果写,

@GetMapping("/getTodayActivity/{millis}", consumes = MediaType.ALL_VALUE)

如果你想使用更多的参数,那么只有在使用"value"时才不会出现编译错误。


1
根据this,当您在类级别或方法级别使用时,@RequestMapping("/home")@RequestMapping(value = "/home")之间没有区别。但是,您可以使用这种用法@RequestMapping(value={"/method1","/method1/second"})来传递多个变量。

参考资料应该来自官方文件或可靠的知名来源。 - Mạnh Quyết Nguyễn
谢谢。我需要更新我的答案,因为Spring文档也是这么说的吗?这是path()的别名。例如,@RequestMapping("/foo")等同于@RequestMapping(path="/foo")。 - Hatice

0

@RequestMapping("/home")@RequestMapping(value = "/home")没有区别。如果只有一个映射关系,您可以快速使用前者;如果有多个映射到同一位置的URL,则可以使用后者,例如:@RequestMapping(value={"/home","/home2","/home2/home3"})

同样,pathvalue也是相同的。如果您查看它们的定义,它们基本上是彼此的别名:

value的定义:

@AliasFor(value="path")
public abstract java.lang.String[] value
    ...

路径的定义:

@AliasFor(value="value")
public abstract java.lang.String[] path
    ...

关于所有的定义,您可以随时访问官方文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接