在 Spring Framework 中,@GetMapping
注解用于将 HTTP GET 请求映射到控制器的处理方法上。在你提供的两个例子中,第一个使用了 path
属性,而第二个使用了路径属性(没有 path
前缀)。实际上,这两种写法是等效的,并且都定义了一个带有变量路径的 GET 映射:
-
@GetMapping(path = “/{shortLinkCode}”):
- 这里使用了
path
属性,并在属性值的开头添加了/
,表示这是一个根级别的路径。
- 这里使用了
-
@GetMapping(“/{shortLinkCode}”):
- 这里直接在注解中指定了路径,同样在路径值的开头添加了
/
,这也表示这是一个根级别的路径。
- 这里直接在注解中指定了路径,同样在路径值的开头添加了
在 Spring 5.2 以后的版本中,可以直接在 @GetMapping
的参数中写路径模式,而不需要显式地使用 path
属性。因此,@GetMapping("/{shortLinkCode}")
是更现代和更简洁的写法。
两种写法都会告诉 Spring,当有 GET 请求到达以 /
开头,后跟一个变量 {shortLinkCode}
的路径时,应该调用这个方法。这里的 {shortLinkCode}
是一个路径变量,Spring 会将其绑定到方法的参数上。
例如:
@RestController
public class ShortLinkController {
@GetMapping("/{shortLinkCode}")
public ResponseEntity<String> redirectByShortLink(@PathVariable String shortLinkCode) {
// 处理逻辑
return ResponseEntity.ok("Redirecting to original URL...");
}
}
在这个例子中,无论使用哪种写法,只要请求的路径匹配 /任意值
,redirectByShortLink
方法就会被调用,并且 shortLinkCode
参数会被赋值为 任意值
。
总结来说,两种写法没有区别,只是风格和习惯的问题。建议使用更简洁的写法 @GetMapping("/{shortLinkCode}")
。