스프링 핵심 원리1 -기본편

junkyu lee·2022년 5월 25일
0

Spring

목록 보기
5/6

https://www.inflearn.com/roadmaps/373


스프링의 핵심 가치

  • 객체 지향 프로그래밍

스프링의 탄생 배경...

  • EJB : 과거 자바 기능의 종합선물세트(spring, jpa 등등)
  • 어렵고 복잡하고 느림

하이버네이트

  • EJB 엔티티빈을 대체하기 위함
    -> 이후 JPA의 구현체로 들어가있음
  • 실용성, 표준의 안정감을 위해 JPA가 나오게 되었다

스프링

  • 로드 존슨
    2003년에는 XML로 시작
    -> 09년부터 자바코드로 설정
    -> 14년 스프링부트 1.0 출시
    -> 17 스프링 프레임워크 5.0,리엑티브 프로그래밍 지원, 스프링 부터 2.0 출시

필수
스프링 프레임워크
스프링 부트

선택 사항
스프링 데이터
스프링 세션
스프링 시큐리티
스프링 rest docs
스프링 배치
스프링 클라우드


스프링 프레임워크

  • 이 강의에서는 스프링 프레임워크의 핵심 기술과 편리하게 사용하게 지원하는 스프링 부트를 위주

스프링 부트

  • 단독 실행 가능(웹서버 내장)
  • starter : 빌드할때 라이브러리들을 묶어서 편하게 가져오게 해주는 기능
  • 스프링 버전과 라이브러리 버전을 자동으로 맞춰서 구성해줌
  • 설정이 편리(관례에 의한 설정)
  • 스프링 부트는 꼭 스프링 프레임워크와 같이 사용 가능하다

스프링이란 용어의 사용

  • 스프링 DI 컨테이터 기술
  • 스프링 프레임워크
  • 스프링 생태계

스프링 핵심 개념, 컨셉

  • 자바 언어 기반 프레임워크, 객체지향언어

객체지향 프로그래밍

  • 객체간의 협력, 유연, 변경 용이(컴포넌트)
  1. 다형성 : 오버라이딩, 협력이라는 객체사이의 관계
    역할과 구현을 명확히 구분하여 객체를 설계
  • ex) 자동차(구현)가 바뀌어도 운전자(클라이언트)는 운전(역할)이 가능하다.
  • ex) 상대 배우가 바뀌어도 공연이 가능하다.
  • 클라이언트에 영향없이 역할과 기능을 구현 가능
  • 핵심은 클라이언트 : 인터페이스만 알면 된다. 내부 구조는 몰라도 됨
  • 변경 가능하고 대체 가능하다.
  • 인터페이스를 안정적으로 잘 설계하는 것이 중요


좋은 객체 지향 설계의 5가지 원칙 (SOLID)

  1. SRP 단일 책임 원칙 : 한 클래스는 하나의 책임, 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것
  2. OCP 개방-폐쇄 원칙 : 확장에는 열려 있으나 변경에는 닫혀 있어, 역할과 구현의 분리
    2.1 문제점 : 구현 객체 변경을 위해선 코드 변경이 필요
    -> 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요하다.
  3. LSP 리스코프 치환 원칙 : 인터페이스 규약을 지키면서 구현체를 구현해야한다.
  4. ISP 인터페이스 분리 원칙 : 인터페이스를 역할에 맞게 분리하는것이 인터페이스가 명확해지고, 대체 가능성이 높아진다.
    DIP 의존관계 역전 원칙 : 추상화(인터페이스)에 의존해야지, 구체화(구현 클래스)에 의존하면 안된다. 역할에 의존해야한다.

객체 지향 설계와 스프링

  • 다형성 + OCP, DIP 을 구현 가능하게 도와줌
profile
가끔 기록하는 velog

0개의 댓글