포스트

Spring에서 여러 RequestMapping 어노테이션 사용하기

서론: Spring Framework와 RequestMapping

Spring Framework는 자바 기반 웹 애플리케이션 개발을 위한 통합 프레임워크입니다. 이 프레임워크에서는 @RequestMapping이라는 어노테이션을 이용하여 HTTP 요청을 자바 메서드에 매핑할 수 있습니다. 즉, 웹에서 특정 URL을 호출했을 때 어떤 메서드가 실행될지 결정하는 역할을 합니다.

여러 RequestMapping 사용 방법

클래스 레벨에서의 사용

클래스 레벨에서 @RequestMapping을 사용하면 해당 클래스에 있는 모든 메서드에 공통된 경로(prefix)를 지정할 수 있습니다. 예를 들어, /api라는 공통된 경로를 설정하면, 그 아래의 메서드들은 /api/xxx, /api/yyy 등으로 접근 가능합니다.

1
2
3
4
5
@RestController
@RequestMapping("/api")
public class MyController {
  // 클래스 레벨에서 "/api" 경로 설정
}

메서드 레벨에서의 사용

메서드 레벨에서는 각각의 메서드에 @RequestMapping을 붙여 다양한 URL과 HTTP 메서드를 지정할 수 있습니다. 예를 들어, GET /api/users 요청과 POST /api/users 요청을 다르게 처리하려면 다음과 같이 할 수 있습니다.

1
2
3
4
5
6
7
8
9
@RequestMapping(value = "/users", method = RequestMethod.GET)
public String getUsers() {
  // GET 요청 처리
}

@RequestMapping(value = "/users", method = RequestMethod.POST)
public String createUser() {
  // POST 요청 처리
}

조합하여 사용하기

클래스 레벨과 메서드 레벨의 @RequestMapping을 함께 사용하면 더욱 다양한 URL 패턴을 표현할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RestController
@RequestMapping("/api")
public class MyController {
  
  @RequestMapping(value = "/users", method = RequestMethod.GET)
  public String getUsers() {
    // GET /api/users
  }

  @RequestMapping(value = "/users", method = RequestMethod.POST)
  public String createUser() {
    // POST /api/users
  }
}

주의사항: Ambiguous Mapping Error

클래스나 메서드에서 동일한 URL 패턴을 중복으로 지정하면 Ambiguous Mapping Error가 발생합니다. 이 오류는 두 개 이상의 메서드나 클래스가 같은 URL을 처리하려고 할 때 발생하므로, URL 패턴을 명확하게 구분해야 합니다.

결론: 효율적인 URL 매핑을 위한 최적의 전략

Spring에서는 @RequestMapping 어노테이션을 통해 다양한 URL 패턴과 HTTP 메서드를 유연하게 지정할 수 있습니다. 클래스 레벨과 메서드 레벨에서 적절하게 조합하여 사용하면, 더욱 효율적인 URL 매핑 전략을 구축할 수 있습니다. 하지만 이때 중복되는 URL 패턴을 피하고 명확한 구조를 유지하는 것이 중요합니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.