1 minute read

Updated:

👩🏻‍💻 Spring과 객체 지향 설계의 관계를 이해해봅니다.

스프링 생태계

스프링이란 단어는 문맥에 따라 다르게 쓰이지만 최근 스프링이라고 하면 스프링 프레임워크와 스프링부트 등을 모두 포함한 스프링 생태계 자체라고 볼 수 있다.

스프링 프레임워크와 스프링 부트

  • 스프링 프레임워크 : 스프링 DI 컨테이너, 웹 기술, 데이터 접근 기술 등등을 통합한 것
  • 스프링 부트 : 스프링을 편리하게 사용할 수 있도록 지원하는 기술

스프링 부트의 장점

  • Tomcat과 같은 웹 서버를 내장하고 있어 별도 웹 서버 설치 없이 스프링 애플리케이션을 쉽게 생성
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
  • 스프링과 3rd parth(외부) 라이브러리 자동 구성
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능을 제공해 모니터링이 용이함

좋은 객체 지향 프로그래밍이란?

스프링의 핵심

스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

좋은 객체 지향 프로그래밍이란?

  • 객체 지향 프로그래밍의 정의
    • 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용한다.
    • 객체 지향의 특징인 추상화, 캡슐화, 상속, 다형성 가운데 유연하고 변경을 용이하게 만드는 방법 즉, 다형성이 핵심이다.

다형성으로 역할과 구현을 분리

자바 언어의 다형성을 활용하여 객체를 설계할 때 역할과 구현을 명확히 분리한다. 즉, 객체 설계 시 인터페이스를 먼저 만들고, 역할을 수행하는 구현 객체를 만든다.

다형성의 본질

  • 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다.

잘 설계된 인터페이스의 중요성

  • 그런데 역할 자체가 변하면? 클라이언트, 서버 모두에 큰 변경이 발생한다.
  • 따라서 인터페이스를 안정적으로 잘 설계하는 것이 중요하다.

정리

스프링은 객체 지향 애플리케이션을 유연하고 변경이 용이하게 개발할 수 있게 도와주는 프레임워크이다. 객체 설계 시 다형성을 활용해 역할과 구현을 명확히 구분하고, 인터페이스를 안정적으로 잘 설계하면 좋은 객체 지향 프로그래밍을 개발할 수 있다.