본문 바로가기
IT/Java

Spring에서 Service와 ServiceImpl 를 나누는 이유(2022.07.19)

by 성준하이 2022. 7. 18.
반응형

스프링에 대한 기본적인 이해는 있을 것이라는 전제하에,

(만약 스프링에 대한 이해도가 없다면 아래 참고포스팅을 참고하여 스프링 예제를 한번 해보고 오는것을 추천한다.)

 

service를 구현할때 service를 클래스로 구현할지,

아니면 interface로 구성 후에 implements 로 구현을 할지에 대한 고민을 한다.

 

하지만 요즘 코딩의 추세는 나누는것이 목적이다.

그 이유는 아래와 같다.

 

  • Loose Coupling 객체 간의 결합도를 낮추어 변화에 유연한 개발을 하기 위해서이다.
    하나의 인터페이스를 구현하는 여러 구현체가 있고 기능에 따라 적절한 구현체가 들어가서 다형성을 주기 위함이다.
    또 하나의 인터페이스만 바라보니 의존관계도 줄일 수 있다.
  • Spring 에서 JDK Dynamic Proxy 를 사용하여 AOP Proxy 를 만드는 만들기 위해 JDK Dynamic Proxy는 인터페이스 기반으로 프록시 객체를 만들게 되어 있다.
    예를 들어, 인터페이스가 있어야지 @Transactional 어노테이션이 동작하게 된다.

 

하지만 무조건 Service인터페이스와 ServiceImpl로 나누어 구현하기보단,

OCP를 준수하며 전략을 쉽게 바꿀 이유가 있는지에 대한 여부를 판단 후 구현하는게 좋다.

 


참고 포스팅

https://thenicesj.tistory.com/41

 

spring 예제 part.1

자바의 꽃이라고 할수 있는 스프링에 대해서 알아보고 간단한 예제를 하나 배워보도록 하자. spring 자바 프로그래밍을 할때 사용되는 프레임워크 중 하나로 현재는 가장 많이 사용되는 프레임워

thenicesj.tistory.com

 

반응형

'IT > Java' 카테고리의 다른 글

JPA에서의 어노테이션  (44) 2022.07.22
LocalDateTime 날짜 비교  (36) 2022.07.21
Spring Bean 이란?  (31) 2022.07.17
이클립스 자바 버전 변경  (35) 2022.07.16
jdbc URL  (29) 2022.07.15

댓글