봄에 여러 @RequestMapping 주석을 사용하는 방법은 무엇입니까?


247

@RequestMapping메소드에 여러 주석 을 사용할 수 있습니까?

처럼 :

@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
  return "welcome";
}

답변:


436

@RequestMappingString[]값 매개 변수를, 그래서 당신은 다음과 같이 여러 값을 지정할 수 있어야한다 :

@RequestMapping(value={"", "/", "welcome"})


2
즉, 실제로 응용 프로그램에서 ""또는 "/"값을 가져 오는 데 문제가 있습니다. 그들은 당신을 위해 일합니까?
Ed Brannin

여러 주석을 사용하여 서로 다른 성공보기 및 양식보기를 각 요청 URL과 연관시키는 방법이 있습니까?
k-den

@EdBrannin 나는 많은 사용자 정의, 헤더, 소비, 매개 변수 등이 필요합니다
deFreitas

또한 어떤 요청 매핑이 호출되었는지 어떻게 알 수 있습니까? 환영합니까?
Siddharth

1
@Siddharth 1. HttpRequest 유형의 매개 변수를 추가하고 검사 할 수 있습니다. 2. 어떤 매핑이 실제로 호출되었는지 걱정한다면이 기법을 사용하지 마십시오. ;)
Ed Brannin 's

24

내 테스트 (봄 3.0.5)에서 @RequestMapping(value={"", "/"}) - "/"작동 하지만 작동 ""하지 않습니다. 그러나 나는 이것이 작동 @RequestMapping(value={"/", " * "})한다는 것을 알았습니다 " * ".


13

필요하지 않습니다. RequestMapping 주석은 와일드 카드 및 개미 스타일 경로를 지원합니다. 또한 기본보기를 원하는 것처럼 보이기 때문에

<mvc:view-controller path="/" view-name="welcome"/>

구성 파일에. 그러면 모든 요청이 루트로 환영보기로 전달됩니다.


이 두 줄 사이에 무언가 있을까요? FreeMarkerViewResolver를 사용하고 있습니다. 따라서이 방법으로 가야합니다 ... 글쎄, 여러 ViewResolver를 만들 수있을 것 같습니다.
wuntee

2
여러 RequestMapping 주석이 제공하는 유연성을 제공하지 않습니다. 예를 들어 POST를 사용하여 "/ a"값을, GET을 사용하여 "/ b"값을 지원하는 방법이 하나 있습니다. 물론 해결 방법은 상당히 쉽지만 (세 번째 방법으로 기능을 리팩터링) 유용 할 것이라고 말합니다.
simon

1

가장 짧은 방법은 다음과 같습니다. @RequestMapping({"", "/", "welcome"})

당신은 또한 할 수 있지만 :

  • @RequestMapping(value={"", "/", "welcome"})
  • @RequestMapping(path={"", "/", "welcome"})

1

현재 Spring-Boot 2.0.4를 사용하면 {}이 작동하지 않습니다.

@RequestMapping

여전히 값 매개 변수로 String []이 있으므로 선언은 다음과 같습니다.

 @RequestMapping(value=["/","/index","/login","/home"], method = RequestMethod.GET)

** 업데이트-Spring-Boot 2.2에서 작동 **

 @RequestMapping(value={"/","/index","/login","/home"}, method = RequestMethod.GET)

대괄호가 유효하지 않습니다. 배열 리터럴의 유효한 구문은 중괄호 {}를 사용하는 것입니다.
luis.espinal

@ luis.espinal 대괄호는 2.0.4 Spring-Boot 버전에서 작동했습니다. 게시물을 업데이트하겠습니다.
팔콘

0

다음 사항도 허용됩니다.

@GetMapping(path = { "/{pathVariable1}/{pathVariable1}/somePath", 
                     "/fixedPath/{some-name}/{some-id}/fixed" }, 
            produces = "application/json")

동일은에 적용 할 수 있습니다 @RequestMapping뿐만 아니라


-2

호출 된 URI를 계속 얻으려면 PathVariable 주석을 사용하는 것이 좋습니다.

@PostMapping("/pub/{action:a|b|c}")
public JSONObject handlexxx(@PathVariable String action, @RequestBody String reqStr){
...
}

또는 요청 객체에서 구문 분석하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.