Spring 이란

Spring / / 2021. 6. 22. 15:13

# Spring 이란
> 모든 내용은 김영한님의 강의를 보고 정리한 내용입니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

1. 핵심 기술 : 스프링 Di컨테이너, AOP, 이벤트, 기타

2. 스프링 부트
    - 스프링을 편리하게 사용할 수 있도록 지원한다.
    - 최근에는 기본으로 사용한다.
    - 웹서버 내장
    - 종속성 버전 관리
    - 외부라이브러리 버전 관리
    - 관례에 의한 간결한 설정

3. 스프링 단어?
    - 문맥에 따라 다르다
    - 스프링 DI컨테이너 기술
    - 스프링 프레임워크
    - 스프링 부트 , 스프링 프레임 워크를 모두 종합한다.

4. 핵심 
    - 스프링은 자바의 객체지향언어의 장점을 살리기 위한 프레임워크

5. 객체지향
    - 객체들의 모임으로 파악하고자 한다.
    - 객체는 메시지를 주고받고 데이터를 처리할수 있다. - 협력
    - 유연하고 변경이 용이하다.
        - 레고 블럭을 조립하듯이
        - 키보드, 마우스 갈아 끼우듯이
        - 결국 컴포넌트를 수비고 유연하게 변경하면서 개발할 수 있는 방법
    - 다형성
        - 역할과 구현으로 구분
        - 만약 자동차라는 역할은 여러가지의 아반뗴, k5등등의 자동차로 구현
        - 구현체의 내부구조를 알 필요가 없다. 변경되어도 영향을 받지 않는다.
        - 클라이언트에 영향을 주지 않고 새로운 기능을 추가할 수 있다.
        - 새로운 구현체가 나와도 클라이언트는 수정이 필요 없다.
        - 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
        - 오버라이딩을 통해 구현한다.
        - 인터페이스가 변하면 모든 것이 변하기때문에 설계를 잘해야한다.

6. SOLID
    - SRP : 단일 책임 원칙
        - 하나의 클래스는 하나의 책임만 가져야 한다.
        - 중요한 기준은 **변경**
        - 변경이 있을 때 파급이 적으면 단일 책임 원칙을 잘 따른 것
    - OCP : 개방 - 폐쇄 원칙
        - 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
        - 다형성을 이용한다 -> 인터페이스를 구현한 새로운 클래스를 만들어서 기능 구현
        - 구현이 바뀌어도 역할을 그대로다.
        - 클라이언트가 구현 클래스를 직접선택하는 것이 아닌 외부에서 주입받는다.
            - 직접 선택하면 클라이언트의 코드가 변경이 되어야 한다.
        - 객체를 생성하고, 연관관계를 맺어주는 볃로의 조립, 설정자가 필요하다.
            - 스프링 컨테이너
    - LSP : 리스코프 치환 원칙
        - 인터페이스를 구현한 구현체는 인터페이스의 규약을 다 지켜야 한다.
        - 자동차 인터페이스의 엑셀은 앞으로 가라는 기능 -> 뒤로가게 구현하면 LSP 위반
    - ISP : 인터페이스 분리 원칙
        - 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
        - 자동차 인터페이스 -> 운전 인터페이스 , 정비 인터페이스
        - 사용자 클라이언트 -> 운전자 , 정비사 분리 가능
        - 분리하면 인터페이스의 변화가 다른 인터페이스에 영향을 주지 않는다
    - DIP : 의존관계 역전 원칙
        - 추상화에 의존해야 한다.
        - 구현 클래스에 의존하지말고 인터페이스에 의존하자.

7. 스프링 DI
    - 다형성 만으로는 클라이언트 코드의 변경을 막을 수 없다.
    - 다형성을 지키면서 OCP, DIP를 지키려면 결국 스프링 컨테이너가 필요하다.

'Spring' 카테고리의 다른 글

Spring Collection @Valid  (0) 2021.06.22
Spring Bean 생명주기  (0) 2021.06.22
스프링 IoC, DI  (0) 2021.06.22
Library VS Framework  (0) 2021.06.22
Spring DTO의 생성 및 레이어 이동  (0) 2021.05.04
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기