이 글을 먼저 보시기 전에 전에 작성했던
https://pinlib.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81%EC%9C%BC%EB%A1%9C-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EC%95%B1-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0
이 글을 먼저 보시고 오시길 바랍니다.
또한 이론적인 부분이 많이 들어가기 때문에
https://pinlib.tistory.com/entry/MVC-%ED%8C%A8%ED%84%B4
이 글들을 보고 오시길 바랍니다.
우선 전에 진행했던 과정에서 이어서
이번에는 project를 구성하는 package들과 file들을 생성해보겠습니다.
해당 구조를 보시면 mvc 패턴에 맞게 controller와 data, repository, service package를 먼저 생성하였습니다.
spring의 경우 역할에 맞게 최대한 분리하는게 중요합니다.
이후에는 각 package마다 class를 만들어 줍니다.
이 모든 방법은 위에 link를 올린 개념편을 바탕으로 만들었기 때문에 해당 글들을 참고하시길 바랍니다.
그런데 이론글에서도 interface에 대한 설명이 부족한 것 같아 더 자세히 다뤄보고자 합니다.
Interface를 사용하는 이유
자바에서는 추상화를 위해 interface라는 도구를 제공합니다.
추상화란 다양한 것들에서 공통적인 성격을 골라 따로 분리하는 것입니다.
interface의 경우 어떤 일을 하는지에 대한 기능만 정의한 것으로 구체적인 방안에 대해서는 정의하지 않습니다.
이를 통해 비즈니스 로직을 서로 분리하여 각각이 변화해도 유연한 대처가 가능하게 합니다.
정리하자면 interface에서는 사용할 method를 정의하고 세부적인 행동 방식에 대해서는 impl에 작성한다고
보면 됩니다.
이를 통해 외부에서 interface에 정의된 method를 사용할 때 세부적인 행동 방식을 모르기 때문에
의존관계가 깔끔해집니다.
* 사실 spring 개발자에게는 interface를 만드는 것이 관습적인 행동이라고도 하는데
project를 개발하는데 있어서 우선 interface라는 큰 틀의 설계도를 작성해 놓으면 project를 구상하기가
쉽기도 해서 그렇다고 합니다.
다음 글에서는 이번에 만든 package들과 class들에 실질적인 code를 작성하는 글을 작성해보겠습니다.
'Spring실습' 카테고리의 다른 글
안드로이드스튜디오와 스프링부트의 @PUT, @PutMapping (0) | 2023.05.22 |
---|---|
안드로이드 스튜디오와 스프링부트에서 마리아DB의 특정 DB값 읽기(findByUserId()) (0) | 2023.05.18 |
안드로이드 스튜디오와 스프링부트를 이용해서 마리아DB에서 모든 DB 읽기 (0) | 2023.05.17 |
안드로이드 스튜디오와 스프링부트를 연동해서 마리아DB에 저장하기 (0) | 2023.05.16 |
스프링으로 모바일 앱 서버 만들기 (0) | 2023.04.25 |