returner
2k
2022-04-27 17:28:39
8
516

패키지 구조 설정은 어떻게 하시나요?


1. 종류별로 패키지를 만들어서 분리

com.company.web.controllers

	+- ProductController.java

com.company.web.payload

	+- ProductRequest.java

	+- ProductResponse.java

com.company.web.services

	+- ProductService.java

com.company.web.repositories

	+- ProductRepository.java


2. 기능별로 패키지 분리

com.company.web.product
	+- ProductController.java
	+- ProductRequest.java
	+- ProductResponse.java
	+- ProductService.java
	+- ProductRepository.java


3. 기능별로 만들되, 서비스와 repo만 분리

com.company.web.product
	+- ProductController.java
	+- ProductRequest.java
	+- ProductResponse.java
com.company.web.services
	+- ProductService.java
	+- ProductRepository.java


저는 대부분의 경우에 1번 스타일을 선호했는데, 생각해보니 2,3 스타일도 나쁘지는 않을것 같아서요.

해외 블로그들을 봐도 3번의 구조를 선호하는 경우도 있더군요.

2번은 아마도 각 서비스들을 다른 컨트롤러에서 쓰지 않는 경우에 한해만 써야할것 같기는 합니다.

(기능이 적고 규모가 작은 사이트들)


0
  • 댓글 8

  • Zebolt
    87
    2022-04-27 17:34:14 작성 2022-04-27 17:34:26 수정됨

    저는 1번과 2번을 사용해봤는데


    개인적인 선호도는 2번입니다.

  • DevHold
    446
    2022-04-27 17:38:00

    예전에는 1번이였지만 

    최근들어서는 2번으로 하고 있습니다.

  • ghjgre
    1k
    2022-04-27 18:23:01 작성 2022-04-27 18:23:15 수정됨

    클린아키텍처라는 책을 읽어보시면 좋을 것 같네요. 기능이 적고 규모가 작은 사이트여서가 분류 기준이 아닌 다른 이유를 찾을 수 있을 거예욤

    -1
  • cynical
    67
    2022-04-27 18:47:33

    2번의 경우, 서비스에서 서비스를 호출할때 뭔가 어색하지 않을까요? 

  • returner
    2k
    2022-04-27 22:13:39

    ghjgre

    네. 참 좋은 책이죠.

    규모가 작은 사이트를 언급한 이유는 여러 컨트롤러에서 여러 서비스들을 호출하게 될때를 말한건데요,

    서비스나 repository를 특정 기능으로 묶어 버리면 아무래도 혼란스러워 보일것 같아서 그런것이었습니다.




  • returner
    2k
    2022-04-27 22:17:08

    cynical

    그래서 생각해본게 3번 입니다. 컨트롤러와 관련된 애들만 한곳에 몰아두고, 서비스들은 서비스들끼리

    묶어두는거죠.

    저는 가급적이면 서비스에서 다른 서비스를 호출하는 경우를 만들지 않으려고 노력하는 편입니다,

    왜냐면, 일반적인 mvc구조로 만들때는 별 문제가 없는데, 만약에 서비스를 아예 분리하는 일이 발생하면

    참조관계들 때문에 좀 골치가 아파지거든요



  • finance
    370
    2022-04-27 22:31:59

    회사의 레거시가 2번으로 되있어서 거기에따르고 있습니다.

  • 어쩌다보니개발자
    279
    2022-04-27 23:15:30

    딱히 의미는 없네요.. 

    명명규칙이나 sample따라 갑니다.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.