Spring MVC에서 클래스 레벨과 메서드 레벨에 URL을 매핑하는 방법에는 몇 가지 차이점이 있습니다.

 

1.클래스 레벨에서의 URL 매핑:
클래스 레벨에서 URL을 매핑하면, 해당 URL 접두사가 해당 컨트롤러 클래스에 있는 모든 요청 매핑 메서드에 적용됩니다. 이를 통해 관련된 작업을 그룹화하여 코드의 조직화를 개선할 수 있습니다.

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        // ...
    }

    @GetMapping("/list")
    public ResponseEntity<List<User>> getUserList() {
        // ...
    }
}

 

2.메서드 레벨에서의 URL 매핑:

메서드 레벨에서 URL을 매핑하면, 해당 URL은 단순히 해당 메서드에만 매핑됩니다. 이를 통해 메서드별로 다른 URL을 지정할 수 있습니다.

@RestController
public class UserController {

    @GetMapping("/users/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        // ...
    }

    @GetMapping("/users/list")
    public ResponseEntity<List<User>> getUserList() {
        // ...
    }
}

정리:
클래스 레벨 매핑: 관련된 메서드를 그룹화하고 코드를 더 깔끔하게 만들어줍니다. 일종의 네임스페이스 역할을 합니다.
메서드 레벨 매핑: 메서드마다 다른 기본 URL을 제공할 수 있어 유연성이 증가하지만, 코드가 조금 더 분산될 수 있습니다.
어떤 방식을 선택할지는 특정 애플리케이션의 요구 사항과 개발자의 선호에 따라 달라집니다.

 

ps 회사 레거시 코드들이 메서드 방식으로 레벨매핑이 되어 있어서 항상 그런식으로 했는데요.

김영한 개발자님 강의를 듣는데 클래스 레벨 맵핑으로 하시길래 궁금해서 찾게 되었습니다.

차이점은 개발 상황에 따라 달라지는듯합니다. 근데 저도 클래스 레벨 매핑이 조금더 마음에 드네요.

기존 코드는 클래스 레벨 매핑 방식으로 변경할 예정입니다.

' > Spring' 카테고리의 다른 글

JpaReporitory vs EntityManager  (0) 2023.09.24
RedirectAttributes?  (0) 2023.09.17
http 메시지 컨버트 위치?  (0) 2023.09.03
returnvalue handler란?  (0) 2023.09.03
argument resolver란?  (0) 2023.09.03

+ Recent posts