Spring Framework 2024. 5. 24. 01:42

객체 지향 설계와 스프링 프레임워크

목차
  1. 스프링
  2. 스프링이 없을 때는
  3. 정리
  4. 실무 고민 (trade off)
  5. 출처

스프링

스프링과 객체 지향의 관계

  • 스프링은 다음 기술로 다형성, OCP, DIP를 가능하게 지원
    • DI(Dependency Injection): 의존 관계, 의존성 주입
    • DI 컨테이너 제공
      • 자바 객체를 컨테이너에 넣고 안에서 의존 관계를 연결하고 주입하는 기능 제공
  • 클라이언트 코드의 변경 없이 기능 확장
  • 구현체를 쉽게 교체할 수 있다

스프링이 없을 때는

  • OCP, DIP 원칙을 지키며 개발하다 보니 할 일이 많았다
    • ⇒ 프레임워크로 만들어버림
  • 순수하게 자바로 OCP, DIP 원칙을 지키면서 개발을 해 보면 DI 컨테이너 (스프링 프레임워크)를 만들게 된다

정리

  • 모든 설계에 역할과 구현을 분리해야 한다
  • 역할만 정의해 두고 구현체는 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계이다
    • 다형성, OCP, DIP를 지켜야 함
    • 스프링 컨테이너 필요
  • 이상적으로는 모든 설계에 인터페이스를 부여하는 것이 좋다
    • 구체적인 구현이 정해지지 않아도 먼저 개발할 수 있다. (DB의 종류 등)
    • 하부 구현 기술 선택을 최대한 미룰 수 있는 장점이 있다
    • 기획이 구체적으로 정해지지 않았을 때 인터페이스를 먼저 만들고, 간단한 구현체를 만들어서 개발
      • 이후 기획이 정리되면 기능 확장
    • 구현 기술이 바뀌더라도 나머지를 변경할 필요가 없고 변경의 범위가 작고 유연해지는 장점

실무 고민 (trade off)

  • 인터페이스를 도입하면 추상화라는 비용이 발생한다
    • 추상화가 되면 코드를 찾기 어려워짐
    • 런타임에 어떤 구현 클래스를 선택하는 지 추적해야 함
  • 장점이 단점을 넘어설 때 선택을 해야 한다
  • 기능을 확장할 가능성이 없다면 구체 클래스를 쓴다
    • 필요하다면 향후 리팩토링
    • 미래에 필요하다고 예상되면 추상화 먼저

출처

스프링 핵심 원리 - 기본편, 김영한

저작자표시 (새창열림)

'Spring Framework' 카테고리의 다른 글

[Spring] FK(id)만 이용해서 관계 있는 엔티티를 생성하는 법 - 프록시 객체  (0) 2024.07.12
[Spring] DTO의 사용 범위, 목적, Mapper  (0) 2024.07.12
좋은 객체 지향 프로그래밍이란? - 다형성  (0) 2024.05.23
[Spring] 동시에 발생한 요청을 처리하는 방법 - Multithreading  (0) 2024.04.26
[Spring] Docker 환경에서 Prometheus, Grafana 설정하는 법 (Grafana No data 에러 해결)  (0) 2024.04.09
  1. 스프링
  2. 스프링이 없을 때는
  3. 정리
  4. 실무 고민 (trade off)
  5. 출처
'Spring Framework' 카테고리의 다른 글
  • [Spring] FK(id)만 이용해서 관계 있는 엔티티를 생성하는 법 - 프록시 객체
  • [Spring] DTO의 사용 범위, 목적, Mapper
  • 좋은 객체 지향 프로그래밍이란? - 다형성
  • [Spring] 동시에 발생한 요청을 처리하는 방법 - Multithreading
개발자 이우진
이우진 기술 블로그
  • All (86)
    • Spring Framework (20)
    • MSA (7)
      • Event Driven Architecture (3)
    • Java (3)
    • Flink (2)
    • Computer Science (9)
      • Object Oriented Programming (3)
    • Problem Solving (15)
    • Design Pattern (0)
    • React (4)
    • Javascript (2)
    • Web (3)
    • Tools & Environment (3)
    • C++ (2)
    • misc (5)
    • Essay (3)
      • 기술 회고 (5)
  • 홈
  • 태그
  • 관리자
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
객체 지향 설계와 스프링 프레임워크
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.