service 를 interface 로 두는 이유
안녕하세요 강사님.
서비스 계층을 설계할 때 인터페이스를 두고 구현체를 만드는 패턴을 사용하는 이유가 궁금합니다.
현재 프로젝트에서는 구현체가 하나뿐인데, 이런 상황에서도 인터페이스를 분리하는 것이 가지는 실질적인 이점이 무엇인지 알고 싶습니다.
특히 구현이 하나로 고정되어 있다면, 바로 구현 클래스를 빈으로 등록해도 되지 않을지 고민이 되었는데요.
설계 관점에서 인터페이스를 미리 분리해두는 이유와, 실무에서 어떤 장점이 있는지 설명해주시면 감사하겠습니다
답변 1
1
안녕하세요 쵸잉님 질문 주셔서 감사합니다.
말씀해주신부분처럼 굳이 인터페이스를 사용하지 않아도 됩니다. 이건 개인적인 스타일에 가까운거 같아요. 그래서 제 코드가 옳다고 말씀드리기에는 좀 조심스러운 부분이 있습니다.
근데 분리하게 되었을 떄 가질 수 있는 장점은 몇개 있습니다. 대표적으로 CGLIB 같은 문제로 인해서 생성자 제약을 피할 수도 있고, DIP 원칙의 관점에서 구현체가 바뀐다는 부분도 가정했을 떄 변경하기도 편하죠.
뭐 굳이 따지자면 이런 이유들이 다양하게 있는데, 우리가 현실적으로 코드 작성할 떄 막 이런 케이스까지 고려하지는 않습니다. 그래서 쵸잉님이 원하시는 스타일로 작성하셔도 큰 문제는 없을꺼같네요.
어디까지나 개발은 각자만의 스타일이 있으니깐요 ㅎㅎ 이정도면 이해가 되셨을까요??
감사합니다!
@RestControllerAdvice를 사용하지 않은 이유?
0
7
1
service-discovery 프로세스 가동 이유
0
13
1
AWS 배포 성능테스트
0
23
1
퀴즈가 안열려요
0
22
1
예전 로드맵과 현재 강의 순서
0
24
1
7강 보고 있는데요.. 글자가 너무 작아요
0
26
1
트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?
0
25
1
헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.
0
54
2
DLQ의 수동 커밋에 대해서 질문있습니다.
0
49
2
노션링크가 접근되지 않습니다.
0
37
1
h2 database
0
36
2
별첨자료 URL 들어가면 404 떠요..
0
35
2
실무에서 동의어 정의 관련
0
42
2
Request DTO에서 Entity를 생성할 때 의존성 방향을 반대로 하면 어떨까요?
0
65
2
소스 코드 좀 올려주세요.
0
37
1
스프링 부트 버전 질문
0
85
2
RedisMessageBroker.kt setLocalMessageHandler 관련 문의
0
86
2
빌드 파일
0
91
2
웹소켓을 이용한 채팅시스템에서 부하테스트를 어떻게 진행해야할까요?
0
333
2
엔티티는 Data Class로 작성하면 안되나요?
0
108
2
stomp websocket
0
99
1
웹소캣 stomp
0
107
2
그레이스풀 셧다운과 데몬 스레드의 관계 질문
0
114
1
api모듈에대해 문의드립니다.
0
92
2





