Springboot MVC 파헤치기(4) @PathVarialbe
Controller에서 사용되는 @PathVariable에 대해서 알아보겠습니다.
@RequestMapping의 URI의 경로 변수를 넣어주는 역할을 합니다.
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
}
@PathVariable name, value 속성
name과 value는 서로 Alias입니다. 따라서 둘 중 하나를 골라서 사용하면 됩니다. 이름으로 경로 변수를 바인딩해줍니다.
@GetMapping(value = "/path/{name}")
public String path1(@PathVariable("name")String name) {
return "path1";
}
@GetMapping(value = "/path/{name}")
public String path2(@PathVariable(value = "name") String name) {
return "path2";
}
@GetMapping(value = "/path/{name}")
public String path3(@PathVariable String name) {
return "path3";
}
- {}로 감싸진 것이 @PathVariavle과 바인딩될 템플릿 변수입니다.
- path1 처럼 value 속성이 default 이므로 "name"으로 바로 줄 수 있고, 명시해주고 싶다면 path2처럼 value = "name"으로 명시해줄 수 있습니다.
- 템플릿 변수명과 @PathVariable로 받을 변수명이 같다면 value값을 생략할 수 있습니다.
@PathVariable required 속성
required = ture가 default이며, true시 값이 없다면 오류가 나옵니다. 하지만 required = false 라면 오류를 발생시키지 않습니다.
@GetMapping(value = {"/path/{name}, /path"})
public String path1(@PathVariable(value = "name",required = false)String name) {
if(name==null){
name = hi;
}
return "path1";
}
- value = {"/path/{name}","/path"}를 준다면 PathVariable 속성이 반드시 필요하지 않은 것이기 때문에 오류를 터트리지 않습니다.
- 단 여러 개의 인자를 넘길 수 없습니다.
지금까지 @PathVariable에 대해서 알아봤습니다. 감사합니다.
'SpringBoot > spring mvc' 카테고리의 다른 글
Springboot MVC 파헤치기(7) @RequestBody, @ResponseBody (0) | 2022.03.15 |
---|---|
Springboot MVC 파헤치기(6) @ModelAttribute (0) | 2022.03.14 |
Springboot MVC 파헤치기(3) @RequstMapping (0) | 2022.03.02 |
SpringBoot MVC 파헤치기(1) (0) | 2022.02.28 |
SpringBoot MVC 파헤치기 (2) (0) | 2022.02.27 |
댓글
이 글 공유하기
다른 글
-
Springboot MVC 파헤치기(7) @RequestBody, @ResponseBody
Springboot MVC 파헤치기(7) @RequestBody, @ResponseBody
2022.03.15 -
Springboot MVC 파헤치기(6) @ModelAttribute
Springboot MVC 파헤치기(6) @ModelAttribute
2022.03.14 -
Springboot MVC 파헤치기(3) @RequstMapping
Springboot MVC 파헤치기(3) @RequstMapping
2022.03.02 -
SpringBoot MVC 파헤치기(1)
SpringBoot MVC 파헤치기(1)
2022.02.28