[스프링 핵심원리] 객체지향 설계와 스프링

김우경·2021년 1월 12일
0

Spring Framework

목록 보기
10/12

김영한님의 스프링 핵심 원리 - 기본편을 보고 공부한 내용입니다.

스프링이란 ?

스프링 프레임 워크

  • 핵심 기술 : DI 컨테이너, AOP, 이벤트
  • 웹 기술: 스프링 MVC, WebFlux
  • 데이터 접근 기술 : 트랜잭션, JDBC, ORM XML지원 등
  • 기술 통합 : 원격접근, 스케줄링
  • 테스트 : 스프링 기반의 테스트 지원
  • 언어 : 코틀린, 그루비

스프링 부트

: 스프링 프레임워크의 기술들을 편리하게 사용할 수 있게 지원

  • 단독 실행할 수 있는 스프링 어플리케이션 쉽게 생성

  • 톰캣같은 웹서버 내장

    ↔스프링의 경우 : 빌드한 스프링 프로젝트를 별도 설치한 톰캣 서버를 넣고 띄우고,,,

  • starter 종속성의 제공 : 라이브러리간의 종속성 이용해서 편리하게 라이브러리 사용 가능

  • 외부 라이브러리 자동 구성 : 프레임워크와 라이브러리간의 궁합 고려할 필요없이 버전을 알아서 챙겨줌

    → 외부 라이브러리 버전에 대해서 고민할 필요 x

  • 프로덕션 준비 기능 제공 : 운영환경에서의 모니터링 기능에 도움

  • 간결한 설정 !!!

스프링이라는 단어는 ?!

  • 스프링 DI 컨테이너 기술
  • 스프링 프레임워크 자체
  • 스프링 부트, 스프링 프레임워크 등 모두 포함한 스프링 생태계 전체

스프링의 핵심

  • 자바 기반의 프레임워크
    객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크

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

좋은 객체 지향 프로그래밍

객체지향의 특징

: 추상화, 캡슐화, 상속, 다형성

객체 지향 프로그래밍

: 프로그램을 객체들의 모임으로 파악
→ 각각의 객체들은 메세지를 주고받고, 데이터를 처리 (협력)
유연하고 변경이 용이
: 컴포넌트를 쉽고 유연하게 변경하면서 개발

—> 다형성이 이를 가능하게 해준다.

다형성

: 클라이언트에게 영향을 주지 않고 기능 바꿀 수 있음
→ 세상을 역할구현으로 구분

장점

  • 단순, 유연, 변경에 용이
  • 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
  • 구현 대상의 내부 구조를 몰라도 되고, 내부 구조가 변경되어도 영향받지 않는다.
  • 구현 대상 자체를 변경해도 영향받지 않는다.
  • 확장 가능한 설계

→ 프로그래밍 언어에서 이를 차용

  • 역할 : 인터페이스
  • 구현 : 인터페이스를 구현한 클래스, 구현 객체
  • 객체 설계시 역할과 구현을 명확하게 분리
  • 객체 설계시 구현보다 인터페이스가 먼저 부여

객체는 협력이다.

  • 클라이언트는 요청, 서버는 응답
    → 수많은 객체 클라이언트와 객체 서버가 서로 협력관계를 가진다.

다형성의 본질

: 인터페이스를 구현한 객체 인스턴스에를 실행시점유연하게 변경
클라이언트의 변경없이, 서버의 구현 기능 유연하게 변경

한계

: 인터페이스 자체가 변하면 ?? 클라이언트와 서버 모두에 큰 변경
→ 인터페이스의 안정적인 설계가 중요

스프링과 객체 지향

  • 스프링은 이런 다형성을 극대화해서 이용할 수 있게 도와준다.
    → 스프링의 IoC, DI 모두 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원

출처

김영한님의 스프링 핵심 원리 - 기본편을 보고 공부한 내용입니다.

profile
Hongik CE

0개의 댓글