我想知道在Spring MVC的Controller
类中,Path
和Variable
有什么区别。
@RequestMapping("/home")
@RequestMapping(value = "/home")
@RequestMapping(path = "/home")
根据Spring文档Spring 5注解类型RequestMapping,路径是值的别名,而值是路径的别名。我想了解这3个RequestMapping定义及其区别。
我想知道在Spring MVC的Controller
类中,Path
和Variable
有什么区别。
@RequestMapping("/home")
@RequestMapping(value = "/home")
@RequestMapping(path = "/home")
@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"时才不会出现编译错误。
@RequestMapping("/home")
和@RequestMapping(value = "/home")
之间没有区别。但是,您可以使用这种用法@RequestMapping(value={"/method1","/method1/second"})
来传递多个变量。@RequestMapping("/home")
和@RequestMapping(value = "/home")
没有区别。如果只有一个映射关系,您可以快速使用前者;如果有多个映射到同一位置的URL,则可以使用后者,例如:@RequestMapping(value={"/home","/home2","/home2/home3"})
同样,path和value也是相同的。如果您查看它们的定义,它们基本上是彼此的别名:
value的定义:
@AliasFor(value="path")
public abstract java.lang.String[] value
...
路径的定义:
@AliasFor(value="value")
public abstract java.lang.String[] path
...