[Spring] Service와 ServiceImpl
Service와 ServiceImpl
- MVC패턴에서 ServiceImpl은 비지니스로직을 수행하는 역할을 말한다. 여기서 말하는 비지니스로직이란, 기능을 구현하는 구현부이다. 비지니스 로직을 수행하기 위해 Service는
interface
파일로 ServiceImpl은 class
파일로 작성한다.
Service Model의 역할
- MVC패턴의 핵심은 View는 자신이 요청할 Controller만 알고 있으면 되고, Controller는 화면에서 넘어오는 매개변수들을 이용해 Service객체를 호출하는 역할을 한다. Service는 불필요하게 Http통신을 위한 순수한 자바 객체로 구성된다.
=> 즉, 자신을 어떤 컨트롤러가 호출하든 상관없이 필요한 매개변수만 준다면 자신의 비지니스 로직을 처리할 수 있다.(모듈화를 통해 재사용성 향상)
- Web기반이 아닌 native app으로 View단이 변경되어도 Service는 View에 종속적인 코드가 없기 때문에 그대로 재사용할 수 있어야 한다. 그리고 추가적인 요청사항이 들어오면 기존 소스를 수정하는게 아니라 기존 Service인터페이스를 구현한 다른 클래스를 구현해 그 객체를 사용하도록 한다.
인터페이스와 인터페이스 구현 클래스로 분리할 경우 장점
- 느슨한 결합을 유지하여 각 기능 간 의존관계를 최소화할 수 있다.
- 의존관계의 최소화로 인해 기능의 변화에도 최소한의 수정으로 개발할 수 있는 유연함을 가질 수 있다.
- 모듈화를 통해 어디서든 사용할 수 있도록 하여 재사용성을 높인다.
- 스프링으 IoC/DI기능을 이용한 빈 관리 기능을 사용할 수 있다.