-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
서비스 계층 추상화 도입 검토
배경
현재 이니셜라이저 프로젝트 개요
- Spring Security 기반 인증/인가 구조 제공
- 통일된 API 응답 포맷 제공 (ApiResponse, ErrorResponse 등)
- 기본적인 예외 처리 및 구조 제공
하지만 현재 Service 레이어는 구현 클래스만 존재하며, 별도의 인터페이스 추상화는 되어있지 않은 상태.
아이디어
서비스 계층을 인터페이스 (Service)와 구현체 (ServiceImpl)로 분리하는 구조를 도입하는 것
예시:
public interface UserService {
UserEntity findUserById(Long id);
void signUp(UserEntity user);
}
@Service
public class UserServiceImpl implements UserService {
...
}장점
-
확장성과 테스트 용이성
- Mockito 등을 이용한 Mock 테스트 작성이 용이
-
관심사 분리
- 인터페이스: 클라이언트와의 연결
- 구현 클래스: 내부 로직 구현
-
다형성과 유지보수성
- 구현 교체가 자유롭고 코드 유연성 증가
- 템플릿으로 사용하는 사람 입장에선 기존 코드 건드리지 않고 따로 구현체를 만들어 커스텀 가능
-
템플릿 범용성 향상
- 다양한 구현 전략에 유연하게 대응 가능 (ex: Memory vs DB)
단점 및 고려사항
-
과도한 구조일 수 있음
- 단순 CRUD 서비스의 경우 인터페이스가 불필요하게 느껴질 수 있음
- 인터페이스가 의미 없는 래퍼 역할만 할 수 있음
- 규모와 설계에 따라 service 인터페이스에 여러 구현체가 아닌 1:1구조가 되는 경우가 많음
-
파일 수 증가
- 클래스 수가 늘어나 코드 복잡도가 올라갈 수 있음
- 단순한 CRUD 서비스라도 구조가 복잡해질 수 있음
Metadata
Metadata
Assignees
Labels
No labels