Spring MVC 에서 path 설정

2018-10-18 14:41

오늘 개발자들끼리 논의하던 내용인데 공유하고 의견 여쭤봐요~


@ReqeustMapping("/slipp/articles") public class XXXController { @GetMapping("/{id}") public String finds(..){ } }

이런 코드가 있을때, A그룹 : Controller 의 공통 requestmapping을 제거하고 메소드별로 넣으면 좋겠다. 유지보수 하기 쉽다. => 이런식..

public class XXXController {

    @GetMapping("/slipp/articles/{id}")
    public String finds(..){

    }
}

B그룹 : 기존 방식이 좋다! => 이런식..

@ReqeustMapping("/slipp/articles")
public class XXXController {

    @GetMapping("/{id}")
    public String finds(..){

    }
}

여러분의 선택과 이유는 무엇일까요?

  • 참고로 B그룹의견이 반영되었고, 대신 IntelliJ의 plugin을 이용해 유지보수하기 쉬운 방향으로 결정은 되었습니다.

5개의 의견 from SLiPP

2018-10-20 05:59

나는 path 중복에 대한 제거 측면에서 수강생들에게 B 그룹의 방법을 추천하고 있다.

중복 제거도 있지만 각 기능에 대한 path를 일관되게 유지할 수 있다는 장점도 있지 않을까?

2018-11-05 16:50

저같은 경우 전자를 선호합니다. 디버깅 과정에서 Nginx Access Log로 추적할때가 종종 있는데요. 전자 방식은 URL 전체 Path로 검색이 숴워집니다. 후자로 할 경우 프로젝트가 커져 모든 Path를 알지 못하는 상황에서는 어느 부분에서 분리 되었는지 몰라 검색하기가 쉽지 않았던 경험이 있습니다. 내가 찾고 싶은 URL을 바로 찾을수 있는 방식이 저는 좋았습니다 :)

2018-11-11 11:57

@DongUk Lee 저는 중복 제거라는 관점에서만 고려했는데요. 프로젝트가 커지고 운영의 편의점을 생각했을 때는 동욱님의 접근 방식도 좋겠네요. 새로운 인사이트를 얻을 수 있는 답변이었네요.

2018-11-16 00:52

안녕하세요 실력은 미미하지만 A그룹과 B그룹에 대해 제가느낀 상황에서 고민해보았습니다. 저같은경우 어떤 서비스 서버를 /버전/서비스 로 만들었습니다. 어떤 문제로 버전을 업해야 되는경우가 발생하였고 해당 문제는 전 버전에 조금 수정하면 되는 경우여서 A그룹을 선택해서 공통부분은 재사용 하는게 소스코드 관리에 효율적인것같아서 선택하였습니다. 그리고 다른 웹서비스 같은 경우에는 버전 관리가 필요하지않아서 B그룹을 선택해서 하위경로 마다 작성하였습니다. 결론은 어떤서비스에 따라 그에 맞게 작성하면 될것같다는 제 짧은 소견입니다...

의견 추가하기